有没有办法创建一个单一文档,以两种不同的方式(不同的前言)处理 LaTeX 文件并产生两个不同的输出。
具体来说,我想制作一套课堂幻灯片,一套供我使用,一套供学生使用。
学生版会将覆盖层压平,并在页面上放置 4 张幻灯片。我希望这有意义。
答案1
这个答案并没有解决你的特定的投影机问题,而是讨论了一般的问题:开发一种以两种截然不同的方式有条件地编译源文档的方法。
我们用我所在组织的报告模板来实现这一点。只需更改一个单词,就可以将组织报告(包含封面、强制性政府表格、分发清单、文本中的图表和表格)更改为手稿形式,该手稿形式消除了封面,删除了表格和分发清单,同时保留了关键字(也是政府表格的一部分)等内容,并在报告末尾收集了表格和图表。当然,页边距、字体等也都不同。
模板的基本结构将是这样的,它提供条件编译,取决于以下两个设置中的哪一项\PREPARETYPE
:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Choose desired document format HERE!:
\def\PREPARETYPE{\DOCTYPEA}% choices: {\DOCTYPEA} or {\DOCTYPEB}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Set up for possible DOCTYPEA format:
\newcommand\DOCTYPEA{
\documentclass{MyOrgClass}
\usepackage{packages for DOCTYPEA}
\def{settings peculiar to DOCTYPEA}
\macros peculiar to initializing DOCTYPEA
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Set up for possible DOCTYPEB format:
\newcommand\DOCTYPEB{
\documentclass{article or whatever class is desired for DOCTYPEB}
\usepackage{TYPEA2TYPEB} % <--- ESSENTIAL TO INTERCEPT/INTERPRET MyOrgClass MACROS
\usepackage{packages for DOCTYPEB}
\def{settings peculiar to DOCTYPEB}
\macros peculiar to initializing DOCTYPEB
}
\PREPARETYPE
%...common preamble commands
\begin {document}
%... document text, figures, tables, etc.
\end {document}
然而,要使这种安排发挥作用,关键在于您需要开发一种风格,在本 MWE 中,这种风格被称为TYPEA2TYPEB.sty
。具体来说,它的唯一功能是创建具有与 中出现的相同非标准名称的宏,MyOrgClass
并提供 应如何解释它们\DOCTYPEB
。在许多情况下,它可能是一个空定义{}
,就像\DOCTYPEA
消除的功能一样\DOCTYPEB
。在其他情况下,必须提供一个新的非空定义。
虽然我们的情况不需要它,但是如果所使用的类也使用非标准宏,我想可能还需要在宏定义TYPEB2TYPEA.sty
中包含一种样式。\DOCTYPEA
\DOCTYPEB
虽然这个答案不能解决您的问题,但它提供了一种生成两个格式截然不同的文档的方法,只需更改源文件中的一个单词即可实现。
我附上一张图,显示来自同一来源的两份文件。左边是手稿表格,右边是组织报告表格。我这样做只是为了强调使用这种方法可能产生的巨大结果差异。