我正在写一本书,到目前为止,这本书完全是用英语写的。现在,为了方便德国读者,我想为每个标题和目录提供德语翻译。我设想了两件事:
能够在整个文档中书写
\bichapter{engl. header}{ger. header}
和\bisection{engl. header}{ger. header}
。例如,当我写 时\bichapter{Introduction}{Einleitung}
,我希望将其排版1. Introduction Einleitung [e.g., in gray font]
有两个目录,一个包含所有英文标题,另一个包含所有德文标题,其中所有 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}
另一个建议是,通过德语标题的选项扩展 等的可选参数\chapter
,\section
然后重新定义\addchaptertocentry
和\chapterlineformat
,也许\chaptermark
可以使用新选项的值。但这会更复杂,而且您明确要求使用\bichapter
和\bisection
(而不是\chapter
和\section
)来解决问题。