ドキュメントに目次を生成し、タイトル「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
}