我已經在文件中產生了目錄,我想將標題“Contents”設為大寫字母,即“CONTENTS”。我發現搜尋的只是如何自訂表中的條目而不是標題。如何才能做到這一點?
我在 ShareLaTeX 中工作XeLaTeX
,我的完整序言是:
\documentclass{article}
\usepackage
[
top=0.7in,
bottom=1.2in,
left=0.8in,
right=0.8in,
]{geometry}
\usepackage{parskip}
\setlength{\parindent}{0cm}
\usepackage{amsmath}
\usepackage{unicode-math}
\usepackage{fontspec}
\usepackage[english,greek]{babel}
\setmainfont
[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
Mapping=tex-text
]{GFSArtemisia}
\setsansfont[Mapping=tex-text]{GFSArtemisia.otf}
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\varnothing]{Asana-Math.otf}
\setmathfont[range=\int]{latinmodern-math.otf}
\usepackage{listings}
\usepackage{multicol}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage[normalem]{ulem}
\usepackage{mdframed}
答案1
通常touhami's
解決方案應該有效,但特殊babel
設定阻止了他的解決方案。
在這種情況下, 的重新定義\contentsname
應該移至\begin{document}
-- 這可以透過 來完成\AtBeginDocument{...}
。
另一種可能性應該是\addto...
方式。我也會嘗試提供這個。
或者,說
\selectlanguage{greek}
\let\mtcontentsname\contentsname
\addto\captionsgreek{\typeout{foo}\renewcommand{\contentsname}{\MakeUppercase\mtcontentsname}}
在序言中。
我相信,polyglossia
與 結合使用是更好的變體,XeLaTeX
而不是babel
.
\documentclass{article}
\usepackage
[
top=0.7in,
bottom=1.2in,
left=0.8in,
right=0.8in,
]{geometry}
\usepackage{parskip}
\setlength{\parindent}{0cm}
\usepackage{amsmath}
\usepackage{unicode-math}
\usepackage{fontspec}
\usepackage[english,greek]{babel}
\setmainfont
[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
Mapping=tex-text
]{GFSArtemisia}
\setsansfont[Mapping=tex-text]{GFSArtemisia.otf}
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\varnothing]{Asana-Math.otf}
\setmathfont[range=\int]{latinmodern-math.otf}
\usepackage{listings}
\usepackage{multicol}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage[normalem]{ulem}
\usepackage{mdframed}
\AtBeginDocument{%
\let\mtcontentsname\contentsname
\renewcommand\contentsname{\MakeUppercase\mtcontentsname}
}
\begin{document}
\tableofcontents
\section{Foo}
\end{document}
答案2
這是
\documentclass{article}
\let\mtcontentsname\contentsname
\renewcommand\contentsname{\MakeUppercase\mtcontentsname}
\begin{document}
\tableofcontents
\end{document}
答案3
最簡單的方法是修補\tableofcontents
,使其列印大寫標題:
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\usepackage[english,greek]{babel}
\usepackage{etoolbox} % for \patchcmd
\setmainfont[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
Mapping=tex-text
]{GFSArtemisia}
\setsansfont[Mapping=tex-text]{GFSArtemisia.otf}
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\varnothing]{Asana-Math.otf}
\setmathfont[range=\int]{latinmodern-math.otf}
\patchcmd{\tableofcontents}{\contentsname}{\MakeUppercase\contentsname}{}{}
\begin{document}
\tableofcontents
\section{ενότητα τίτλο}
\subsection{ενότητα τίτλο}
\end{document}
或者,使用
\addto\captionsgreek{%
\edef\contentsname{%
\noexpand\MakeUppercase{\unexpanded\expandafter{\contentsname}}%
}%
}
如果您需要英語,也同樣如此。
你想要的大寫是格式化,而不是重新定義固定標籤,因此該\patchcmd
方法更適合。但是,如果您需要修補多個命令,它可能會變得複雜。
在這種情況下,該\addto
方法可能更可取,我們可以提供一個抽象。例如,假設您還希望圖形和表格清單具有大寫標題以及摘要名稱;最後一個對於希臘文和英文都應為大寫。
\newcommand{\upcasebabellabel}[1]{%
\edef#1{\noexpand\MakeUppercase{\unexpanded\expandafter{#1}}}%
}
\addto\captionsgreek{%
\upcasebabellabel\contentsname
\upcasebabellabel\listfigurename
\upcasebabellabel\listtablename
\upcasebabellabel\abstractname
}
\addto\captionsenglish{%
\upcasebabellabel\abstractname
}