texlive
在 Debian Jessie 上使用
我正在写职位申请,希望内容包含德语和英语两个版本。
我希望在我的申请表封面后面有一页,其中包含两个ToC
相邻的内容,但每个内容都只显示指定的语言内容。
到目前为止,我已经找到了如何添加两个ToC
这样的方法:
\usepackage{parcolumns}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\pc@placeboxes}{\vrule}{{\VRULE}}{}{}
\makeatother
\newcommand\VRULE{\color{SOME_COLOR}\vrule width 0.2mm}
\usepackage{shorttoc}
...
\begin{parcolumns}[nofirstindent,rulebetween=true]{2}
\colchunk{
\selectlanguage{german}
\shorttableofcontents{\contentsname}{1}
}
\colchunk{
\selectlanguage{english}
\tableofcontents
}
\end{parcolumns}
\pagebreak
这将产生以下内容:
正如您所见,事情还远未完成。我对 LaTeX 的花招不太感兴趣,所以我不知道我即将要求的事情是否有可能实现。
第一个问题是:是否可以自定义目录以仅显示满足特定条件的条目?在我的情况下,条件是:部分名称是德语还是英语?如果是德语,则只显示在左侧目录中,如果是英语,则只显示在右侧目录中。此外,如果一个条目可以同时满足两个条件,以便它可以出现在两个目录中(例如,我没有翻译的证书,并且不需要为了好玩而添加两次),那就太棒了。我想以上所有内容都可以用某种方式工作,并if
为德语和英语部分添加某种值,然后进行检查并根据它相应地填充目录。
继续这个思路,如果你熟悉这两种语言,你可能会注意到上图中的条目1 和 2含义相同(但使用不同的语言)以及条目3 和 4。
这就引出了我的第二个问题:是否可以使用某种条件来允许两个部分具有相同的编号?
最后页面看起来应该是这样的:
编辑:感谢了不起的 @ChristianHupfer,它几乎完成了!最后一个问题是删除toc
没有条目 X、Y 和 Z 但ftoc
有这些条目的空白条目:
上图对应下面的代码:
\section{Lebenslauf}
\pagebreak
\section{Lebenslauf}[CV]*
\pagebreak
\section{Bachelor Urkunde}
\pagebreak
\section{Bachelor Urkunde}[Bachelor Diploma]*
\pagebreak
\section{Lalalala}[Lalalala]
\pagebreak
\section{Wichtige Informationen}
\pagebreak
\section{Wichtige Informationen}[Important information]*
\pagebreak
\section{Andere Informationen}
\pagebreak
\section{Noch mehr wichtige Informationen}
\pagebreak
\section{Noch mehr wichtige Informationen}[Even more important information]*
\pagebreak
\section{Blabla}[Only in English Foo]*
\pagebreak
\section{Zusammengef\"uhrt}[Recombined]
我感觉我可能解释得不够清楚(对此我深表歉意!)——不同语言的部分实际上必须作为单独的部分出现。因此,上面的代码最适合我的需求,但两个部分中都留有空白条目,这会带来一点视觉上的烦恼toc
。是否可以删除这些?这不是什么大问题,但我相信事情会看起来好得多,尤其是对于整个主题的其他读者来说,他们希望使用更大的文档中提供的解决方案,其中多个条目可以出现在两个部分中的一个中,而toc
在另一个中留下巨大的空白toc
。
答案1
以下是带有附加可选参数的版本,\section
该参数保存目录的章节名称的英文版本。如果省略[...]
,则不会在中输入任何内容ftoc
(意思是foreign toc
)。
用于\tableofcontents
传统行为和\tableofcontents[ftoc]
其他语言。语言设置实际上是在parcolumns
环境中完成的,而不是在\tableofcontents
等中完成的。
\documentclass{article}
\usepackage[english,ngerman]{babel}
\usepackage{xpatch}
\usepackage{xparse}
\usepackage{parcolumns}
\makeatletter
\patchcmd{\pc@placeboxes}{\vrule}{{\VRULE}}{}{}
\newcommand\VRULE{\color{SOME_COLOR}\vrule width 0.2mm}
\let\latex@@section\section
\RenewDocumentCommand{\section}{somo}{%
\IfBooleanTF{#1}{%
\latex@@section*{#3}%
}{%
\IfValueTF{#2}{%
\latex@@section[#2]{#3}%
}{%
\latex@@section{#3}%
}%
\IfValueT{#4}{%
\addcontentsline{ftoc}{section}{\protect\numberline{\csname thesection\endcsname}#4}
}%
}%
}
\renewcommand\tableofcontents[1][toc]{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{#1}%
}
\makeatother
\begin{document}
\begin{parcolumns}[nofirstindent,rulebetween=true]{2}
\colchunk{
\selectlanguage{ngerman}
\tableofcontents
%\shorttableofcontents{\contentsname}{1}
}
\colchunk{
\selectlanguage{english}
\tableofcontents[ftoc]
}
\end{parcolumns}
\pagebreak
\section{Lebenslauf}[CV]
\section{Bachelor Urkunde}[Bachelor Diploma]
\section{Wichtige Informationen}[Important information]
\end{document}
更新
\documentclass{article}
\usepackage[english,ngerman]{babel}
\usepackage{xpatch}
\usepackage{xparse}
\usepackage{parcolumns}
\makeatletter
\patchcmd{\pc@placeboxes}{\vrule}{{\VRULE}}{}{}
\newcommand\VRULE{\color{SOME_COLOR}\vrule width 0.2mm}
\newcounter{storetocdepth}
\let\latex@@section\section
\RenewDocumentCommand{\section}{somos}{%
\IfBooleanTF{#1}{%
\latex@@section*{#3}%
}{%
\IfBooleanTF{#5}{%
\setcounter{storetocdepth}{\value{tocdepth}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{-4}}
% The #2 is of no use here, except of page headings /section mark
\IfValueTF{#2}{%
\latex@@section[#2]{#3}%
}{%
\latex@@section{#3}%
}%
\addtocontents{toc}{\protect\setcounter{tocdepth}{\number\value{storetocdepth}}}
\addtocontents{toc}{\protect\contentsline{section}{\protect\phantom{#3}}{}}% Provide an empty fake entry
}{%
\IfValueTF{#2}{%
\latex@@section[#2]{#3}%
}{%
\latex@@section{#3}%
}%
}%
\IfValueTF{#4}{%
\addcontentsline{ftoc}{section}{\protect\numberline{\csname thesection\endcsname}#4}
}{%
\addtocontents{ftoc}{\protect\contentsline{section}{\protect\phantom{#2}}{}}% Provide an empty fake entry
}%
}%
}
\renewcommand\tableofcontents[1][toc]{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{#1}%
}
\makeatother
\begin{document}
\begin{parcolumns}[nofirstindent,rulebetween=true]{2}
\colchunk{
\selectlanguage{ngerman}
\tableofcontents
%\shorttableofcontents{\contentsname}{1}
}
\colchunk{
\selectlanguage{english}
\tableofcontents[ftoc]
}
\end{parcolumns}
\pagebreak
\section{Lebenslauf}[CV]
\section{Bachelor Urkunde}[Bachelor Diploma]
\section{Wichtige Informationen}[Important information]
\section{Andere Informationen}
\section{Noch mehr wichtige Informationen}[Even more important information]
\section{Blabla}[Only in English Foo]*
\section{Zusammengef\"uhrt}[Recombined]
\end{document}