告诉 LaTeX 从文档内部编译到哪里?

告诉 LaTeX 从文档内部编译到哪里?

这是一个假设场景。我想制作一个 Beamer 演示文稿和一份该演示文稿的讲义。我按如下方式启动我的文件:

\newif\ifhandout
\handouttrue
\ifhandout
\PassOptionsToClass{handout}{beamer}
\fi
\documentclass{beamer}

\ifhandout
\usepackage{pgfpages}
\pgfpagesuselayout{4 on 1}[a4paper,landscape,border shrink=5mm]
\fi

现在,我想向这个条件函数添加一个命令,该命令告诉 LaTeXhandout-\jobname.pdf在相关语句为真时进行编译。这种事情可能吗,还是我只能从命令行执行此操作?

我没有添加 beamer 标签,因为这不是关于 beamer 的问题。我想不出任何其他标签可以归入此问题。

答案1

根据您的环境,您可以尝试反过来做:有presentation.texpresentation-handout.tex,后者是前者的符号链接,然后检查\jobname以决定。或者为手册准备一个包装文件,执行一些\RequirePackages\AtBeginDocuments,这在很大程度上取决于您的需要。

答案2

您无法从文档内部更改作业名称。(好吧,您可以采取一些\write18技巧,使用不同的编译器实例来编译文档……)

最简单的做法是创建一个讲义的包装文件:

% handout.tex
\PassOptionsToClass{handout}{beamer}
\input{presenation}

presentation.tex您的演示文件在哪里。然后您获得presentation.pdfhandout.pdf。请注意,如果您在命令行上使用这些命令,作业名称将是文件的名称\input。您需要使用-jobname来更改它。

相关内容