如何对齐葡萄牙语文档中的内容标题?

如何对齐葡萄牙语文档中的内容标题?

在葡萄牙语中,“目录”的名称是“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>宏应该只包含标题的名称……

相关内容