在葡萄牙语中,“目录”的名称是“Sumário”。因此,我想将“Sumário”一词放在页面的中心。
我知道如何将标题放在中间:
\documentclass{article}
\usepackage{tocloft}
\renewcommand{\contentsname}{\hfill\bfseries\Large Contents\hfill}
\renewcommand{\cftaftertoctitle}{\hfill}
\begin{document}
\tableofcontents
\end{document}
我还知道如何用“Sumário”替换“目录”:
\documentclass{article}
\usepackage[english,brazil]{babel}
\begin{document}
\tableofcontents
\end{document}
但是,这两种解决方案不能同时使用。当同时使用这两种解决方案时,我们得到的是单词“Sumário”,但不在中间。
我能做什么?
评论:我在文档中还使用\usepackage{tocloft}
和\usepackage[english,brazil]{babel}
用于其他目的。因此,它们不能从序言中删除(即解决方案必须与两者兼容)。
答案1
简单地合并解决方案是行不通的,因为babel
会推迟节标题的定义\begin{document}
。您可以通过插入\renewcommand{\contentsname}
后 \begin{document}
:
\documentclass{article}
\usepackage[english,brazil]{babel}
\usepackage{tocloft}
\begin{document}
\renewcommand{\contentsname}{\hfill\bfseries\Large Sum\'ario\hfill\null}
\tableofcontents
\end{document}
正如 remco 在评论中指出的那样,\contentsname
当你切换语言时,例如使用 ,就会重新定义\selectlanguage
。因此,在每次执行语言切换命令后,你都必须重新重置\contentsname
。
另一种方法是将重新定义添加到\captionsbrazil
:
\documentclass{article}
\usepackage[english,brazil]{babel}
\usepackage{tocloft}
\addto\captionsbrazil{\renewcommand{\contentsname}{\hfill\bfseries\Large Sum\'ario\hfill\null}}
\begin{document}
\tableofcontents
\end{document}
这将使 的新定义\contentsname
成为“默认”。但我不知道这样做的稳健性,因为\captions<language>
宏应该只包含标题的名称……