如何重命名法语文档目录中的章节?

如何重命名法语文档目录中的章节?

我的文档是法语的。我在文档中添加了附录,附录使用 \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}

在此处输入图片描述

相关内容