如题。我在编写一个模板,需要自定义双语目录,在网上搜索资料的时候发现很多自定义目录都用到了\if@twocolumn、\@restonecoltrue以及\@restonecolfalse等宏,请问这些宏是什么意思?它们最初在哪里定义?

2 回答2

0
这个问题已经不太适合“基础入门”的标签了,应该是“模板开发”。 LaTeX 的源码在 [source2e](http://mirrors.ctan.org/macros/latex/base/source2e.pdf),几个标准文档类(article、book 和 report)的源码在 [classes](http://mirrors.ctan.org/macros/latex/base/classes.pdf) ,这是在 `\documentclass` 载入时执行的。 回到你的问题,`\@restonecolfalse` 是在 classes 的第 3 页,`\newif\if@restonecol` 在定义 `\if@restonecol` 的同时也会定义 `\@restonecoltrue` 和 `\@restonecolfalse`。`\if@twocolumn` 是在 source2e,应该不难搜索到。 在重定义内容时要注意,已经调用的宏包或者文档类可能已经重定义了底层的内容,比如 `ctexart` 就调用了许多宏包,并在 `article` 的基础上进行了很多修改。另一方面,重定义时需要避免跟后续调用的宏包冲突,比如 `hyperref` 通常在导言区的结尾,也就是在载入其他宏包并进行设置后才载入 `hyperref`。
  • 非常感谢! – wwlswj 2020-11-17 16:12 回复
0
`\if@twocolumn` 是判断现在是否是双栏排版,毕竟单双栏是有区别的,如果是,就执行第一条命令,如果不是,就第二条。

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。