双列布局,每种语言有两个目录

双列布局,每种语言有两个目录

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}

在此处输入图片描述

相关内容