假设我有一份这样的文件。
\documentclass{article}
\begin{document}
\section{one}
\begin{enumerate}
\item This is the first item.
\item This is the second item.
\item This is the third item.
\end{enumerate}
\section{two}
bla bla blabla
\end{document}
是否可以根据编译期间传递的参数强制枚举标签中的项目顺序和部分顺序。
我的简历需要这个,有时我需要强调(在顶部列出)我的物理技能,有时需要强调我的电子技能(取决于上下文)。我可以保留两份不同的简历,但那太麻烦了。我想知道是否存在这样的事情。
答案1
一种方法是在序言中定义“特殊”部分,然后使用变量/宏来指定它们插入文档的顺序。下面我将展示一种方法。我曾使用latex3提供一个稍微时髦的界面来控制打印的变体:
\documentclass{article}
\newcommand\mylist{
\section{one}
\begin{enumerate}
\item This is the first item.
\item This is the second item.
\item This is the third item.
\end{enumerate}
}
\newcommand\blah{
\section{two}
bla bla blabla
}
\usepackage{expl3}
% set a default
\providecommand\cvversion{listblah}
\ExplSyntaxOn
\newcommand\mycv{
\str_case:xn {\cvversion} {
{listblah} { \mylist \blah}
{blahlist} { \blah \mylist }
}
}
\cs_generate_variant:Nn \str_case:nn {xn}
\ExplSyntaxOff
\begin{document}
\mycv
\end{document}
因此\mylist
和\blah
是您想要在不同位置打印的内容的两位,并且\mycv
宏用于根据的值将它们打印到所需的顺序\cvversion
。默认情况下,\mylist
在之前打印,\blah
但是如果您设置\cvversion to
blahlist`,您将以相反的顺序获得它们。
您可以\cvversion
使用以下命令从命令行进行设置
pdflatex "\def\cvverson{blahlist}\input{filename}"
其中filename
被替换为文件的名称。我会通过创建多个版本的简历来做到这一点,如下所示
% blahlist version
\newcommand\cvversion{blashlist}
\input filename
或者使用符号链接,然后用来\jobbname
设置\cvversion accordingly (in which case you would not need the macro
\cvversion`....)。
最后,请注意,上面的宏不进行任何错误检查。这在您的用例中可能没问题,但添加它仍然可能更安全。更严重的是,您可能需要微调 中不同文档元素周围的间距\mycv
,但如果不知道这些宏里面有什么,就很难猜出该怎么做。