如何在 KOMAScript 中创建具有双语标题和目录的文档?

如何在 KOMAScript 中创建具有双语标题和目录的文档?

我正在写一本书,到目前为止,这本书完全是用英语写的。现在,为了方便德国读者,我想为每个标题和目录提供德语翻译。我设想了两件事:

  1. 能够在整个文档中书写\bichapter{engl. header}{ger. header}\bisection{engl. header}{ger. header}。例如,当我写 时\bichapter{Introduction}{Einleitung},我希望将其排版

    1. Introduction
       Einleitung [e.g., in gray font]
    
  2. 有两个目录,一个包含所有英文标题,另一个包含所有德文标题,其中所有 PDF 超链接都准确链接到点 #1 中排版的标题。

下面是一个最小的“非工作”示例,描述了我设想的 LaTeX 命令流程:

% !TeX TS-program = lualatex
\documentclass{scrbook}
\usepackage[ngerman,english]{babel}

\NewDocumentCommand\bichapter{mm}{%
    \chapter{#1}
    \addtocounter{chapter}{-1}%
    {\let\clearpage\relax\let\addtotoc\relax\chapter{\selectlanguage{ngerman}#2}}%
}
\NewDocumentCommand\bisection{mm}{%
    \section{#1}%
    \addtocounter{section}{-1}%
    {\let\clearpage\relax\let\addtotoc\relax\section{\selectlanguage{ngerman}#2}}%
}

\begin{document}
    \selectlanguage{english}\tableofcontents
    \selectlanguage{ngerman}\tableofcontents
    \selectlanguage{english}
    
    \bichapter{Introduction}{Einleitung}
        \bisection{History}{Historie}
        \bisection{Objective}{Ziel}
    \bichapter{Acquisition of Data}{Datenerhebung}
    \bichapter{Conclusion}{Fazit}
\end{document}

上述 MWE 的输出如下:

在此处输入图片描述 在此处输入图片描述

您会看到英文和德文标题混合在英文目录中(而德文目录完全是空的)。

相关工作

我见过人们修补文档类的\chapter\section\tableofcontents命令article这里这里在我这个新手看来,相应的定义看起来scrbook要复杂得多,而且我没有修补它们的专业知识。

答案1

使用 KOMA-Script,您可以简单地定义一个新的 ToC \DeclareNewTOC,并将德语条目写入该新 ToC:

\documentclass{scrbook}
\usepackage[ngerman,main=english]{babel}
\usepackage{xcolor}
\colorlet{german}{gray}

\DeclareNewTOC[listname=\contentsname]{gtoc}
\makeatletter
\newcommand*{\tableofgermancontents}{%
  \begingroup
    \selectlanguage{ngerman}%
    \let\if@dynlist\if@tocleft% This is only needed, if you want to be able to
                              % use option toc=flat.
    \listoftoc{gtoc}%
  \endgroup
}
\makeatother

\NewDocumentCommand\bichapter{O{#2}mO{#4}m}{%
  \chapter[#1]{#2\hfil\linebreak\foreignlanguage{ngerman}{\textcolor{german}{#4}}}%
  \addxcontentsline{gtoc}{chapter}[\thechapter]{\foreignlanguage{ngerman}{#3}}%
}

\NewDocumentCommand\bisection{O{#2}mO{#4}m}{%
  \section[#1]{#2\hfil\linebreak\foreignlanguage{ngerman}{\textcolor{german}{#4}}}%
  \addxcontentsline{gtoc}{section}[\thesection]{\foreignlanguage{ngerman}{#3}}%
}

\begin{document}
  \tableofcontents
  \tableofgermancontents
    
  \bichapter{Introduction}{Einleitung}
  \bisection{History}{Historie}
  \bisection{Objective}{Ziel}
  \bichapter{Acquisition of Data}{Datenerhebung}
  \bichapter{Conclusion}{Fazit}

  \bichapter[Head and table of contents]{Chapter title}[Kopf und Inhaltsverzeichnis]{Überschrift}
\end{document}

内容

内容目录

引言/Einleitung、历史/Historie、目标/Ziel

另一个建议是,通过德语标题的选项扩展 等的可选参数\chapter\section然后重新定义\addchaptertocentry\chapterlineformat,也许\chaptermark可以使用新选项的值。但这会更复杂,而且您明确要求使用\bichapter\bisection(而不是\chapter\section)来解决问题。

相关内容