我使用维他命LaTeX 模板(基于回忆录和模板的自定义样式)。我通过包大量使用尾注enotez
。然后,我导出一个没有尾注的简短版本(全部注释掉,当然是手动的)。时不时地,我会在“完整”版本或简短版本中修饰各种细节。
保留一个来源以获取不同版本是明智之举(在当前情况下是“完整”版本和简短版本,尽管我可以在某些时候使用第三个版本的选项)。
我在完整版中使用的软件包是:
\usepackage{org-preamble-xelatex} % as per the original template
\usepackage{fontawesome,marvosym,url} % \Mobilefone looks better than \faMobile
\usepackage{ebgaramond}
\usepackage{lastpage} % use in header for full version
\usepackage{xcolor}
\usepackage{csquotes}
\usepackage{enotez,fnpct,footmisc}
\usepackage{multicol} % end-notes in two-columns
现在,在简短版本中,我不想使用上述某些内容,尤其是fnpct
、enotez
和。我想消除所有出现的尾注标记(在文本中和末尾)。还有(甚至可能还有)更多与内容(文本)本身有关的更改(如在multicol
footmisc
多个输出 PDF,但其中包含有限的信息)。
明显地,这不是一个新问题!搜索并阅读以下相关问答:
- https://tex.stackexchange.com/a/5896/8272(回答LaTeX 条件表达式)
- 向文档传递参数
- 制作文档的不同版本
- 在一次构建中生成不同文档版本的多个 PDF
- 一个源文本,两个输出
- 如何从一个源创建多个演示文稿
- 多个输出 PDF,但其中包含有限的信息
但是,这些信息太多了,需要仔细阅读。对于初学者来说,有什么建议可以开始阅读吗?
更新
只是为了完整性,我使用http://www.scons.org/SConstruct
以及编译文档的以下内容。它的工作方式很简单(另请参阅:https://tex.stackexchange.com/a/26573/8272)。
# make sure scons finds tex executables:
import os
environment = Environment(ENV=os.environ)
# xelatex
environment['PDFLATEX'] = 'xelatex'
# target and source:
pdf_short_cv = environment.PDF(target='cv_nikalexandris_short.pdf', source='short_cv.tex')
pdf_full_cv = environment.PDF(target='cv_nikalexandris_full.pdf', source='full_cv.tex')
# make sure that the pdf is reloaded properly (e.g., in Skim)
environment.Precious(pdf_short_cv)
environment.Precious(pdf_full_cv)
答案1
这是一个示意性的答案,因为您似乎渴望了解所涉及的原理,就像渴望得到答案一样。
对于简历,我喜欢将每个部分分成独立的文件,然后您可以\input
根据需要添加或删除它们。您可以将其与一些布尔逻辑结合起来,以确定是否包含内容。在下面的示例中,您可以看到如何将条件子句添加到宏定义中以及如何\if
直接使用 -constructions 进行操作。
因此,您需要在独立文件中添加一些“部分”:
% cv-associations.tex
\section{Associations}
\lipsum[1]
% cv-contact.tex
\section{Contact Info}
\lipsum[1]
% cv-education.tex
\section{Education}
\cvendnote{\lipsum[2]}%
\lipsum*[1]
\cvendnote{\lipsum[3]}%
% cv-outreach.tex
\section{Outreach}
\cvendnote{\lipsum[2]}%
\lipsum*[1]
\cvendnote{\lipsum[3]}%
% cv-presentation.tex
\section{Presentations}
\lipsum[1]
% cv-publications.tex
\section{Publications}
\lipsum[1]
% cv-teaching.tex
\section{Teaching}
\cvendnote{\lipsum[2]}%
\lipsum*[1]
\cvendnote{\lipsum[3]}%
然后你需要主文件:
\RequirePackage{etoolbox}% etoolbox's \bool*-related commands work with normal \if-related commands
\providebool{fullCV}% default: false
%\booltrue{fullCV}
%
\documentclass{article}
\usepackage{fontspec}
\usepackage{fontawesome,url,marvosym}
% An example of how you might conditionally load packages
\iffullCV
\usepackage{ebgaramond}
\else
\usepackage{libertine}
\fi
\usepackage{lastpage}
\usepackage{xcolor}
\usepackage{fnpct}
\usepackage{enotez}
\usepackage{multicol}
\usepackage{footmisc}
\usepackage{csquotes}
\usepackage{lipsum}% just for dummy text
% for things you sometimes want to \input
\newcommand{\cvinput}[1]{%
\iffullCV
\input{#1}
\else\fi}
% conditionally include \endnotes
\newcommand{\cvendnote}[1]{%
\iffullCV
\endnote{#1}%
\else\fi}
\begin{document}
% regular \input files will always be included
\input{cv-contact}
\input{cv-education}
\input{cv-publications}
% \cvinput files will only be included if \fullCVtrue is active
\cvinput{cv-presentations}
\input{cv-teaching}
\cvinput{cv-outreach}
\input{cv-associations}
\iffullCV
\printendnotes
\else\fi
\end{document}
现在您可以直接编译该文件,只需根据\booltrue
需要取消注释该行即可。但之所以在行上方这样设置,\documentclass
是因为您可以使用命令行通过一个命令编译两个文件。例如(假设文件名为multioutputCV.tex
):
xelatex -jobname=CVfull "\newif\iffullCV\fullCVtrue\input{multioutputCV.tex}" && xelatex -jobname=CVshort "\newif\iffullCV\fullCVfalse\input{multioutputCV.tex}"
(但是,需要编译两次才能得到完整版本的尾注。)
应该会产生两个文件:CVshort.pdf
和CVfull.pdf
。如果你愿意,你现在可以写一个Makefile
,但这有点超出了这个问题的范围。