バイリンガル文書の目次にキリル文字の大文字の文字列を追加できません。コンパイル可能な例を次に示します。
\documentclass[a4paper,10pt]{extreport}
\usepackage[koi8-r]{inputenc}
\usepackage[english,russian]{babel}
\newif\ifeng
\def\rus{\selectlanguage{russian}\engfalse}
\def\eng{\selectlanguage{english}\engtrue}
\def\UpperCase#1{\ifeng\uppercase{#1}\else\lowercase{#1}\fi}
\def\section#1{\vspace{1cm plus 1cm minus .5cm}\goodbreak
\noindent{\bf\large\UpperCase{#1}}%
\ifeng\addcontentsline{entoc}{section}{\UpperCase{#1}}\else%
\addcontentsline{rutoc}{section}{\UpperCase{#1}}\fi\par\nopagebreak
}
\def\subsection#1{\goodbreak
\noindent{\bf\large #1}%
\ifeng\addcontentsline{entoc}{subsection}{#1}\else%
\addcontentsline{rutoc}{subsection}{#1}\fi\par\nopagebreak}
\makeatletter
\renewcommand\tableofcontents{\pagebreak\selectlanguage{russian}
\noindent{\bf\large СОДЕРЖАНИЕ}\@starttoc{rutoc}
\vspace{2em}\selectlanguage{english}
\noindent{\bf\large CONTENTS}\@starttoc{entoc}}
\makeatother
\begin{document}
\tableofcontents
\rus\section{Русский}
\subsection{Подсекция}
Текст
\eng\section{English}
\subsection{Subsection}
Text
\end{document}
(奇妙ですが、koi8-r で大文字にするにはマクロを呼び出す必要があり\lowercase
、その逆も同様です)。
\rus\section{Русский}
しかし、ファイル内のコマンドでは、\jobname.rutoc
が表示されます\contentsline {section}{\lowercase {\IeC {\CYRR }\IeC {\cyru }\IeC {\cyrs }\IeC {\cyrs }\IeC {\cyrk }\IeC {\cyri }\IeC {\cyrish rt }}}{1}
。
目次を大文字にするにはどうすればいいですか?
答え1
\MakeUppercase
ではなくを使用する必要がありますが、オプションを使用して\uppercase
明示的にロードする必要もあります。fontenc
T2A
\documentclass[a4paper,10pt]{extreport}
\usepackage[T2A]{fontenc}
\usepackage[koi8-r]{inputenc}
\usepackage[english,russian]{babel}
\newif\ifeng
\def\rus{\selectlanguage{russian}\engfalse}
\def\eng{\selectlanguage{english}\engtrue}
\def\section#1{\vspace{1cm plus 1cm minus .5cm}\goodbreak
\noindent{\bf\large\MakeUppercase{#1}}%
\ifeng\addcontentsline{entoc}{section}{\MakeUppercase{#1}}\else%
\addcontentsline{rutoc}{section}{\MakeUppercase{#1}}\fi\par\nopagebreak
}
\def\subsection#1{\goodbreak
\noindent{\bf\large #1}%
\ifeng\addcontentsline{entoc}{subsection}{#1}\else%
\addcontentsline{rutoc}{subsection}{#1}\fi\par\nopagebreak}
\makeatletter
\renewcommand\tableofcontents{\pagebreak\selectlanguage{russian}
\noindent{\bf\large СОДЕРЖАНИЕ}\@starttoc{rutoc}
\vspace{2em}\selectlanguage{english}
\noindent{\bf\large CONTENTS}\@starttoc{entoc}}
\makeatother
\begin{document}
\tableofcontents
\rus\section{Русский}
\subsection{Подсекция}
Текст
\eng\section{English}
\subsection{Subsection}
Text
\end{document}