我想排版 LaTeX 文件并从命令行设置初始页码(因为我需要经常更改它以与不同的文档合并)。我以为下面的方法可行,但实际上不行:
pdflatex "\setcounter{page}{5}\input{test.tex}"
当我这样做时,首页页码仍然是 1 - 有人知道为什么会这样吗?
答案1
pdflatex "\AtBeginDocument{\setcounter{page}{5}}\input{test.tex}"
答案2
因为这基本上相当于将其放在\setcounter{page}{5}
LaTeX 文件的开头,甚至在 \documentclass{...}; 之前,此时页码计数器甚至尚未设置,并将通过后续命令重置。
有很多方法可以实现你想要的。如果我知道你使用的是什么操作系统,我会更容易提出建议。例如,在基于 Unix 的系统上,你可以使用sed
。
一个相对独立于平台的选项是这样的:在你的 .tex 文件中放入如下内容:
\input{pagenumbercommand}
它在编译时读取文件 pagenumbercommand.tex。(这可以发生在之后\begin{document}
或类似情况。)pagenumbercommand.tex 可以包含一行,您可以随意重写。然后,例如:
echo "\setcounter{page}{5}" > pagenumbercommand.tex && pdflatex test.tex
会做你想做的事。(我认为这甚至在 Windows 上也能工作!)像 LuaTeX 这样的软件会提供更简单的解决方案。
答案3
您可以在命令行上定义一个宏并在之后立即使用它\begin{document}
。这解决了@frabjous提到的没有其他文件的问题。
之后立即使用pdflatex "\newcommand{\startpagecount}{\setcounter{page}{5}}\input test"
和。\startpagecount
\begin{document}