这是一个假设场景。我想制作一个 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.tex
和presentation-handout.tex
,后者是前者的符号链接,然后检查\jobname
以决定。或者为手册准备一个包装文件,执行一些\RequirePackages
和\AtBeginDocuments
,这在很大程度上取决于您的需要。
答案2
您无法从文档内部更改作业名称。(好吧,您可以采取一些\write18
技巧,使用不同的编译器实例来编译文档……)
最简单的做法是创建一个讲义的包装文件:
% handout.tex
\PassOptionsToClass{handout}{beamer}
\input{presenation}
presentation.tex
您的演示文件在哪里。然后您获得presentation.pdf
和handout.pdf
。请注意,如果您在命令行上使用这些命令,作业名称将是文件的名称\input
。您需要使用-jobname
来更改它。