带有附加命令的命令行 latex:`latex '\newif...`

带有附加命令的命令行 latex:`latex '\newif...`

很久以前,我确实用一些工具建立了我的 CV 编译系统\ifLANG,然后用

pdflatex '\newif\ifLANG\LANGtrue\input{main}'

之后main.tex开始于

\ifcsname ifLANG\endcsname\else\newif\ifLANG\LANGfalse\fi
\documentclass{...}
...

我的想法是,在编译文件时不使用任何技巧来提供默认语言(在我的情况下是英语),但是通过简单的调用(通过 Makefile),我可以将语言切换为其他语言(在我的情况下是日语和意大利语)。

不幸的是,似乎有些东西已经发生了变化,现在这个不再起作用了,我得到了一个错误

$ latex '\newif\ifjapanese \input test-if'
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=latex)
 restricted \write18 enabled.
entering extended mode
LaTeX2e <2017-04-15>
Babel <3.16> and hyphenation patterns for 84 language(s) loaded.
(./test-if.tex)
! Incomplete \ifcsname; all text was ignored after line 1.
<inserted text> 
                \fi 
<*> \newif\ifjapanese \input test-if

? 

有人能找出原因吗?谢谢。

答案1

\ifLANG在命令行中定义时,你有

\ifcsname ifLANG\endcsname\else\newif\ifLANG\LANGfalse\fi

并且测试结果为真,因此 TeX 想要跳过“else”部分,但会跟踪嵌套的条件。在本例中,并且\ifLANG是一个条件,因此\fi匹配它,并且没有匹配的\ifcsname

解决方案:

\ifcsname ifLANG\endcsname
\else
  \expandafter\newif\csname ifLANG\endcsname
  %\LANGfalse % not needed
\fi

相关内容