我收到了一份包含一些现有代码的文档。我想在奇数页和偶数页上设置文本高度(以解释不同的页脚)。我是 LaTeX 新手,不知道具体什么可能有用。
以下是我以为会在奇数页和偶数页上交替显示文本高度的代码。但不知何故,\@outputpage
代码中的 被读作字符串,就好像我试图在文本中写入“@outputpage”,如屏幕截图所示。
\makeatletter
\patchcmd\@outputpage{\textheight}{\ifodd\count\z@ 210mm \else 176mm\fi}{}{}
\makeatother
我不知道如何防止这种情况发生,或者是否有其他方法来改变文本高度。我正在使用 Overleaf,我开始认为问题可能出在这里,而不是 LaTeX。
答案1
这对乳胶没有影响,它纯粹是编辑器中的一个产物。
与大多数语法高亮器一样,Overleaf 使用的语法高亮器实际上并不解释乳胶,它只是使用一些固定规则。
在一份文件中,如果没有\makeatletter
\patchcmd\@outputpage{\textheight}{\ifodd\count\z@ 210mm \else 176mm\fi}{}{}
\@
将引用后面跟着 10 个字符标记的命令和后面跟着字符标记的outputpage
命令\z
@
如果您实际执行了 latex,则会\makeatletter
更改标记化规则,因此@
是一个字母,因此\@outputpage
和\z@
都是每个单独的标记命令名称,并且这种解释会持续到被恢复,\makeatother
但语法高亮器不知道这一点。
您会在这个网站上看到相反的问题,它选择假设这@
始终是一个字母,因此
\patchcmd\@outputpage{\textheight}{\ifodd\count\z@ 210mm \else 176mm\fi}{}{}
尽管被省略了,但它还是被突出显示,就像\@outputpage
是一个命令一样\makeatletter
,并且这对于乳胶来说会失败。