我目前正在写一份报告,其中所有的标题都是法语的,因此我的目录也是法语的。但是,我还需要包含一个英文目录,我想知道是否有办法添加其他语言的章节标题以自动生成额外的目录页?
例如我想将这两个标题用于一个部分...
\section{Méthodes et matériaux}
\section{Methods and materials}
我知道这可能不是经常做的事情,但如果有人有任何建议那就太好了。如果您需要我提供任何其他信息,请随时询问。
答案1
复制所做\tableofcontents
的操作。要定义英文标题,您必须使用宏在法文标题下方输入它们\addtoetoc
\documentclass[a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,french]{babel}
\makeatletter
\newcommand\englishtableofcontents{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\begin{otherlanguage}{english}
\chapter*{%
\contentsname
\@mkboth{\MakeUppercase\contentsname}
{\MakeUppercase\contentsname}%
}%
\@starttoc{tec}%
\end{otherlanguage}
\if@restonecol\twocolumn\fi
}
\newcommand{\addetoc}[2]{%
\addcontentsline{tec}{#1}{\protect\numberline{\csname the#1\endcsname}#2}%
}
\makeatother
\begin{document}
\frontmatter
\tableofcontents
\englishtableofcontents
\mainmatter
\chapter{Introduction}
\addetoc{chapter}{Introduction}
\section{Méthodes et matériaux}
\addetoc{section}{Methods and materials}
\end{document}
以下是示例中的第 i 页:
这是第三页:
这是该类的完整版本article
,我们可以利用列表命令以非常相似的方式定义的事实:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,french]{babel}
\usepackage{etoolbox,pdftexcmds}
\let\englishtableofcontents\tableofcontents
\patchcmd\englishtableofcontents{{toc}}{{tec}}{}{}
\preto\englishtableofcontents{\begin{otherlanguage}{english}}
\appto\englishtableofcontents{\end{otherlanguage}}
\let\englishlistoffigures\listoffigures
\patchcmd\englishlistoffigures{{lof}}{{lef}}{}{}
\preto\englishlistoffigures{\begin{otherlanguage}{english}}
\appto\englishlistoffigures{\end{otherlanguage}}
\let\englishlistoftables\listoftables
\patchcmd\englishlistoftables{{lot}}{{let}}{}{}
\preto\englishlistoftables{\begin{otherlanguage}{english}}
\appto\englishlistoftables{\end{otherlanguage}}
\newcommand{\addetoc}[2]{%
\addcontentsline{tec}{#1}{\protect\numberline{\csname the#1\endcsname}#2}%
}
\makeatletter
\newcommand{\englishcaption}[1]{%
\ifnum\pdf@strcmp{\@captype}{figure}=\z@
\addcontentsline{lef}{figure}{\protect\numberline{\thefigure}#1}%
\else
\addcontentsline{let}{table}{\protect\numberline{\thetable}#1}%
\fi
}
\makeatother
\begin{document}
\tableofcontents
\englishtableofcontents
\listoffigures
\englishlistoffigures
\listoftables
\englishlistoftables
\section{Méthodes et matériaux}
\addetoc{section}{Methods and materials}
\subsection{Méthodes}
\addetoc{subsection}{Methods}
\begin{figure}[htp]
\centering{something}
\caption{En français}
\englishcaption{In English}
\end{figure}
\subsection{Matériaux}
\addetoc{subsection}{Materials}
\begin{table}[htp]
\centering{something}
\caption{En français}
\englishcaption{In English}
\end{table}
\end{document}
答案2
是的,这似乎是可能的,如果您在文档中使用 KOMA 脚本类,甚至还有一个详细的操作指南。请查看 KOMA 脚本手册,部分“使用 tocbasic 管理表格和内容列表”,第 15.5 节:“仅使用一个命令即可完成所有操作”中描述了一种更简单的方法,但您也可以阅读 15.4 下的示例作为入门指南...
我不确定它是否适用于具有两个以上级别的第二个目录,但章节和部分似乎是可行的。至少在表 15.1 中,M. Kohm 描述了在这种新目录中可能有两个计数器。
回答OP的评论:
@user18056 不,你误解了我的建议:像往常一样,将目录制作成法语版本 ( \tableofcontents
)。另外创建第二个目录,并带有自己的扩展文件,例如 *.foo。在每个章节 ( \chapter{Méthodes}
) 和部分之后,你都写下\addtocontents{foo}{Methods}
。在你想要使用英文目录的地方,你必须添加类似 的内容\listoftoc{foo}
。
为了详细了解如何做到这一点,我承认我需要几个小时。现在我放弃本周的工作。也许你可以先写一个 MWE 并将其与你的问题一起发布在这里。