![条件 If-then-else/xIf-then-else 包](https://linux22.com/image/379599/%E6%9D%A1%E4%BB%B6%20If-then-else%2FxIf-then-else%20%E5%8C%85.png)
我目前正在准备一个关于标题中提到的软件包的演示文稿。我的问题是,我真的不明白为什么有人会在 LaTeX 文档中使用条件语句。使用这种语句有什么好处?你能给我一个现实世界的应用程序吗,它们对“主流”LaTeX 用户有什么实际帮助?
答案1
无论您是否使用该\ifthenelse
语法,都可以进行各种测试。
例如你可以:
测试图像的高度是否大于或小于其宽度,然后决定旋转图像或将其设置在横向页面上,或其他适当的位置
在序言中设置一个布尔标志,然后有条件地包含文档的各部分,例如带有或不带有注释的演示文稿或带有或不带有答案的问答表。
在一个框中对一些文本进行试验排版,然后测试最终的大小(或换行的严重程度或其他),并使用不同的设置(例如较小的字体大小)重复测试,最后使用一个框。
你可以进行测试并改变计数器的呈现方式,例如进行交叉引用第 3.2 节如果你还没有进入第 3 章,而只是第 2 节如果你是
您可以测试 \day 并根据需要使用
st
或nd
或来制作 6 月 17 日等等。rd
许多这些测试可用作特定的包命令,例如varwidth
用于试用设置,或varioref
用于变体引用和几个用于日期格式化的包,但总是可以想到要测试的东西,而这些命令没有在包中定义。
答案2
条件句的使用贯穿了LaTeX 内核帮助排版分节单元等。最终用户的可用性通常允许创建可以通过更改变量来更改的文档。也就是说,您无需创建两个单独的文档,每个文档的内容基本相同,只是有一些细微的变化,而是可以创建一个基于变量的单个文档。
举一个实际的例子,假设有人为学生写一份试卷。他们将整个试卷写成一组问题和答案,每个答案都写在answer
相应问题之后的环境内(比如说)。现在您可以使用comment
包裹打印不带答案的文档(使用\excludecomment{answer}
),以准备实际考试;\includecomment{answer}
当您想要完整的解决方案时,则打印带有答案的文档(使用)。
另一个示例来自交叉引用包varioref
允许用户\vref{<ref>}
以这样一种方式指定,即引用根据其相对于引用对象的位置而变化;“参见多于“ 或者 ”以下“而不是一些绝对的参考”参见第节1.2“。
来自 LaTeX 内核的另一个示例:使用 打印整数以使其始终有两位数\two@digits
。这是来自内核的定义:
\def\two@digits#1{\ifnum#1<10 0\fi\number#1}
读作伪代码,\two@digits{<num>}
首先检查(条件)是否<num>
小于 10。如果是,则打印0
,然后打印<num>
。这确保小于 10 的数字前面会有0
。这种条件允许在需要数字宽度时进行一致的排版。当然,它也可以在其他环境中使用。