使用包 shellesc 生成两个具有不同类选项的文件

使用包 shellesc 生成两个具有不同类选项的文件

我想生成多个不同字体大小的 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您还需要一个条件来在实际排版时跳过该部分。

我改成articleamsart,因为没有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}

相关内容