ifdef 指令
如果指定的属性被设置了,ifdef
和 endif
指令之间的内容就会被包含进来。
ifdef example
ifdef::env-github[] This content is for GitHub only. endif::[]
start指令的语法是 ifdef::<attribute>[]
,其中`<attribute>`是属性的名称。
请记住,内容不仅限于单行。您可以在`ifdef`和`endif`指令之间拥有任意数量的内容。
如果你在`ifdef`指令内有大量内容,你可能会发现使用长格式版本的指令更加易读,在该版本中,属性(也就是条件)在`endif`指令中再次被引用。
如果定义了长格式示例
ifdef::env-github[] This content is for GitHub only. 这一部分的内容太多了,如果没有闭合的`ifdef`指令,我读源码都会感到困惑。 对于短代码块来说,这并不是必要的,但如果你是有条件地包含一个部分,这可能是值得考虑的事情。 如果你不注意,当其他阅读者审阅你的文档源代码时,他们可能会因为阅读你的源文档而感到目眩。 endif::env-github[]
如果你只处理单行文本,可以将内容直接放入方括号内,并省略`endif`指令。
ifdef 单行示例
ifdef::revnumber[This document has a version number of {revnumber}.]
上面的单行块等同于这个正式的`ifdef`指令:
ifdef::revnumber[] This document has a version number of {revnumber}. endif::[]
如果没有定义指令
ifndef` 是 ifdef
的逻辑相反。如果指定的属性 未 设置,则只有在 ifndef
和 endif
之间的内容才会被包含进来。
ifndef example
ifndef::env-github[] This content is not shown on GitHub. endif::[]
start指令的语法是`ifndef::< attribute >[],其中
< attribute >`是属性的名称。
ifndef` 指令支持与 ifdef
相同的单行和长形式变体。
检查多个属性
ifdef` 和 ifndef
指令都接受多个属性名。组合符可以是“and
”或者“or
”。两个组合符不能在同一个表达式中混合使用。
包含多个属性的条件编译指令
- 如果任何属性被设置(或者)
-
属性名必须用逗号(
,
)分隔。如果设置了一个或多个属性,内容将被包含。否则,内容不包含。如果任何属性示例ifdef::backend-html5,backend-docbook5[Only shown if converting to HTML (backend-html5 is set) or DocBook (backend-docbook5 is set).]
- 如果所有属性都已设置(并且)
-
多个属性名称必须用加号(
+
)分隔。如果所有属性都被设置,内容就会被包含进来。否则,内容不会被包含。如果所有属性示例ifdef::backend-html5+env-github[Only shown when converting to HTML (backend-html5 is set) on GitHub (env-github is set).]
如果没有定义多个属性
ifndef` 指令否定了表达式的结果。使用 ifndef
指令时,应该用“除非
”作为前缀来读这个表达式。
- 除非设置了任何属性(或者)
-
多个属性名称必须用逗号(
,
)分隔。如果一个或多个属性已设置,则不包含内容。否则,将包含内容。除非任何属性的例子ifndef::profile-production,env-site[Not shown if profile-production or env-site is set.]
- 除非所有属性都被设置(并且)
-
多个属性名称必须用加号(
+
)分隔。如果所有的属性都设置了,内容就不包括在内。否则,内容将被包括进来。除非所有属性示例ifndef::profile-staging+env-site[Not shown if profile-staging and env-site are set.]