我的问题很简单:我想要一个这样的目录:
第 1 章 - 部分章节标题
附件 A - 部分附录标题
但我得到了:
第 1 章 - 部分章节标题
A章-一些附录标题
事实上我重新定义了目录(下面的代码)
标题有同样的问题:我想要:
附件 A - 部分附录标题
不是
A章-一些附录标题
以下 MWE 向您展示了该问题:
\documentclass[12pt,a4paper]{book}
% Ecrire en français
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usepackage{xspace} % Pour les espaces automatiques
% En têtes
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{\markright{\thesection~- ~#1}}
\renewcommand{\chaptermark}[1]{\markboth{\chaptername~\thechapter~-~ #1}{}}
\fancypagestyle{main}{
\fancyhead{} % clear all header fields
\fancyhead[LE]{\footnotesize{\scshape\nouppercase{\leftmark}}}
\fancyhead[RO]{\footnotesize{\scshape\nouppercase{\rightmark}}}
\fancyfoot{} % clear all footer fields
\fancyfoot[LE,RO]{\thepage}
\renewcommand{\headrulewidth}{0 pt}
\renewcommand{\footrulewidth}{0 pt}
}
% Part name in TOC
\usepackage{tocloft}
\usepackage{xpatch}
\renewcommand\cftpartpresnum{\hfill}
\renewcommand\cftpartleader{\hfill}
\addtocontents{toc}{\cftpagenumbersoff{part}}
\renewcommand{\thepart}{Partie \Roman{part} --\hspace{-.4cm}}
\renewcommand\cftchappresnum{Chapitre\ }
\renewcommand\cftchapaftersnum{\hfill--\hfill}
\renewcommand\cftchapnumwidth{3.2cm}
\renewcommand\cftdotsep{2}
%\renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} %Si on veut mettre des pointillés
%\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\newcommand\Bpart[1]{\part{\texorpdfstring{}{}#1}}
\newcommand\Bchapter[1]{\chapter{\texorpdfstring{}{Chapitre \arabic{chapter} -- }#1}}
% Nouvelles commandes
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
\begin{document}
\tableofcontents
\pagestyle{main}
\chapter{Some plain stuff}
\appendix
\chapter{Some appendix stuff}
\chapter{Some other}
\end{document}
一个聪明的做法是重新定义代码中的\chaptername
when ,但我没有成功。\appendix
如果有人知道如何修复此问题,请告诉我。谢谢。
答案1
这是一个解决方案
- 对于需要设置的标题
\makeatletter
\renewcommand{\chaptermark}[1]{\markboth{\@chapapp~\thechapter~-~ #1}{}}
\makeatother
- 对于目录,您需要设置
\makeatletter
\renewcommand\cftchappresnum{\@chapapp\ }
\makeatother
并添加\appendix
\makeatletter
\addtocontents{toc}{\protect\renewcommand\protect\cftchappresnum{\@chapapp\ }}
\makeatother
笔记您可以简单地使用\renewcommand\cftchappresnum{\chaptername\ }
,然后在后面添加\appendix
:\addtocontents{toc}{\protect\renewcommand\protect\cftchappresnum{\appendixname\ }}
以避免使用\makeatletter--\makeatother
完整代码
\documentclass[12pt,a4paper]{book}
% Ecrire en français
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usepackage{xspace} % Pour les espaces automatiques
% En têtes
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{\markright{\thesection~- ~#1}}
\makeatletter
\renewcommand{\chaptermark}[1]{\markboth{\@chapapp~\thechapter~-~ #1}{}}
\makeatother
\fancypagestyle{main}{
\fancyhead{} % clear all header fields
\fancyhead[LE]{\footnotesize{\scshape\nouppercase{\leftmark}}}
\fancyhead[RO]{\footnotesize{\scshape\nouppercase{\rightmark}}}
\fancyfoot{} % clear all footer fields
\fancyfoot[LE,RO]{\thepage}
\renewcommand{\headrulewidth}{0 pt}
\renewcommand{\footrulewidth}{0 pt}
}
% Part name in TOC
\usepackage{tocloft}
\usepackage{xpatch}
\renewcommand\cftpartpresnum{\hfill}
\renewcommand\cftpartleader{\hfill}
\addtocontents{toc}{\cftpagenumbersoff{part}}
\renewcommand{\thepart}{Partie \Roman{part} --\hspace{-.4cm}}
\makeatletter
\renewcommand\cftchappresnum{\@chapapp\ }
\makeatother
\renewcommand\cftchapaftersnum{\hfill--\hfill}
\renewcommand\cftchapnumwidth{3.2cm}
\renewcommand\cftdotsep{2}
%\renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} %Si on veut mettre des pointillés
%\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\newcommand\Bpart[1]{\part{\texorpdfstring{}{}#1}}
\newcommand\Bchapter[1]{\chapter{\texorpdfstring{}{Chapitre \arabic{chapter} -- }#1}}
% Nouvelles commandes
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
\begin{document}
\tableofcontents
\pagestyle{main}
\chapter{Some plain stuff}
\appendix \makeatletter
\addtocontents{toc}{\protect\renewcommand\protect\cftchappresnum{\@chapapp\ }}
\makeatother
\chapter{Some appendix stuff}
\chapter{Some other}
\end{document}