我想生成多个不同字体大小的 pdf 文件。我参考了这解决方案,并形成如下代码。
% test.tex
\documentclass{article}
\usepackage{shellesc}
\ShellEscape{%
lualatex --jobname="\jobname-8pt"
"\PassOptionsToClass{8pt}{article}"
}%
\ShellEscape{%
lualatex --jobname="\jobname-12pt"
"\PassOptionsToClass{12pt}{article}"
}%
\expandafter\stop
\begin{document}
Hello world.
\end{document}
它不适用于-shell-escape
终端上的标志。编码的正确方法是什么?原始答案中的\gdef\string
和的目的是什么?\string\input\space\jobname
答案1
您需要再次输入文档。\string
使用这些命令是为了避免 TeX 扩展这些命令,否则会在传递的命令行中产生垃圾\ShellEsc
。
\ShellEsc
您还需要一个条件来在实际排版时跳过该部分。
我改成article
了amsart
,因为没有8pt
前者的选项。
\documentclass{amsart}
\usepackage{shellesc}
\ifdefined\dotypesetting\else
\edef\typesettingcommand#1{%
lualatex --jobname='\jobname-#1'
'\gdef\string\dotypesetting{}% the \else part will be skipped
\string\PassOptionsToClass{#1}{amsart}% pass the option
\string\input{\jobname}'% input the document
}
\ShellEscape{\typesettingcommand{8pt}}% do the first run
\ShellEscape{\typesettingcommand{12pt}}% do the second run
\expandafter\stop
\fi
\begin{document}
Hello world.
\end{document}