我的文档是法语的。我在文档中添加了附录,附录使用 \chapter{},因此我希望将这些章节命名为“Annexe”(这是目录中“附录”的法语单词)。
但我当前的文档无法做到这一点。
我认为这与我的目录的自定义有关。我也想保留它。
工作示例:
%Preamble
\documentclass[a4paper,french,oneside,openright]{book}
\usepackage[french]{babel}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan
}
\usepackage{lastpage}
\usepackage{lipsum}
\usepackage{tocloft,calc}
\renewcommand{\cftchappresnum}{Chapitre }
\AtBeginDocument{\addtolength\cftchapnumwidth{\widthof{\bfseries Chapitre }}}
\usepackage{datetime}
\usepackage[toc]{appendix}
\begin{document}
\tableofcontents
\part{main}
\chapter{Lorem ipsum}
\lipsum[1-2]
\renewcommand{\appendixname}{Annexe}
\renewcommand{\appendixtocname}{Annexe}
\renewcommand{\appendixpagename}{Annexe}
\part{appendices}
\begin{appendices}
\chapter{Some appendice}
\lipsum[1-2]
\chapter{Some appendice}
\lipsum[1-2]
\end{appendices}
\end{document}
我知道这个问题已经被关闭,并指向\chaptername 甚至用于目录中的附录章节但这对我一点帮助都没有。这个问题下的另一个答案被标记为解决方案。那个答案帮助我解决了这个问题。
答案1
您可以\addcontentsline
像在包中一样调整宏appendix
(使用该titletoc
选项时)。
\documentclass[a4paper,french,oneside,openright]{book}
\usepackage{lastpage}
\usepackage{lipsum}
\usepackage{tocloft,calc}
% a command to tweak \addcontentsline for chapters
\newcommand{\chapitretocentry}{%
\let\oldacl=\addcontentsline % save original definition
\def\addcontentsline##1##2##3{% (re)define \addcontentsline
\def\tempa{##1}\def\tempb{toc}% store ##1 and toc in temp vars
\ifx\tempa\tempb % check if they are "equal"
\def\tempa{##2}\def\tempb{chapter}%
\ifx\tempa\tempb % check if ##2 is "equal" to chapter
\oldacl{##1}{##2}{\chaptername\space ##3}% apply original \addcontentsline adding \chaptername
% in the other cases, just apply the original \addcontentsline
\else
\oldacl{##1}{##2}{##3}%
\fi
\else
\oldacl{##1}{##2}{##3}%
\fi
}
}
\AtBeginDocument{\chapitretocentry} % invoke the command at the beginning
\usepackage{datetime}
\usepackage[titletoc]{appendix}
\usepackage[french]{babel}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan
}
\begin{document}
\tableofcontents
\part{main}
\chapter{Lorem ipsum}
\lipsum[1-2]
\renewcommand{\appendixname}{Annexe}
\renewcommand{\appendixtocname}{Annexes}
\renewcommand{\appendixpagename}{Annexe}
\part{Annexes}
\let\addcontentsline=\oldacl % reset the original def
\begin{appendices}
\chapter{Some appendice}
\lipsum[1-2]
\chapter{Some appendice}
\lipsum[1-2]
\end{appendices}
\end{document}
答案2
你必须告诉 LaTeX,在处理目录中的附录时,\chaptername
应该变成\appendixname
。
一旦目录排版完毕,该设置就会消失,因为这发生在组内部。
\documentclass[a4paper,french,oneside,openright]{book}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan
}
\usepackage{lastpage}
\usepackage{lipsum}
\usepackage{tocloft,calc}
\usepackage{datetime}
\usepackage[toc]{appendix}
\renewcommand{\cftchappresnum}{\chaptername\ }
\AtBeginDocument{\addtolength\cftchapnumwidth{\widthof{\bfseries\chaptername }}}
\AddToHook{env/appendices/begin}{%
\addtocontents{toc}{\let\string\chaptername\string\appendixname}%
}
\begin{document}
\tableofcontents
\part{main}
\chapter{Lorem ipsum}
\lipsum[1-2]
\part{appendices}
\begin{appendices}
\chapter{Some appendice}
\lipsum[1-2]
\chapter{Some appendice}
\lipsum[1-2]
\end{appendices}
\end{document}