
これに関連してもう一つ質問します 章の番号は「文字通り」だが、内容には番号が付かない それは「正確」ではありませんでした...この質問は例付きの正確な質問です...
この例では、章の最初のページに章「1」と「2」が表示され (これが私の希望です)、コンテンツには「1」と「2」が表示されます (これが私の希望ではありません...)。テキストでは同じものを取得したいのですが、コンテンツには「1」と「2」が表示されます。では、章の見出しを数値に変更するにはどうすればよいでしょうか。セクション 1 には、私の例のように「one.1」ではなく「1.1」を表示したいのです。
私は自分の本(アラビア語の確率論)でこれらのパッケージをすべて使用しているため、最終的な競合を防ぐためにすべてのパッケージを作成します...
\documentclass[14pt,a4paper]{extbook}%{article}%
\usepackage{titletoc}
\usepackage{etoolbox}
\usepackage{multicol}
\usepackage{amsmath,amssymb}
\usepackage[most]{tcolorbox}
\usepackage{boxedminipage}
\usepackage{slashbox}
\usepackage{titlesec}
\usepackage{enumitem}
\usepackage{minitoc}
\usepackage{rotating}
\usepackage{fmultico}
\setlength{\columnseprule}{0.1pt}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{pdflscape}
\usepackage{array}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage[numerals=maghrib]{arabic}
\makeatletter
\let\old@makechapterhead\@makechapterhead
\def\@makechapterhead{\def\thechapter{\words{chapter}}\old@makechapterhead}
\makeatother
\newcommand\words[1]{\expandafter\xwords\csname c@#1\endcsname}
\def\xwords#1{\ifcase#1\or
one\or
two\or
three\or
\else
I need more words\fi}
\begin{document}
\tableofcontents
\chapter{Simulation}
\section{Introduction 1}
Simulation
\section{Introduction 2}
\chapter{Simulation}
Simulation
\end{document}
答え1
\thechapter
使用されているマクロを変更する代わりに内部マクロ を直接\@makechapterhead
パッチして、章の「番号」の表現をタイプセットするときに の代わりにを使用するようにすることができます。(パッチは命令を介して行うことができます。\@makechapterhead
\words{chapter}
\thechapter
\patchcmd
ツールボックスとにかく、パッケージ にアクセスできるようになります\patchcmd
。) の定義に触れないことで、たとえば目次の作成における\thechapter
の使用に関して下流の複雑さは発生しません。\thechapter
まとめると、私は
\makeatletter
\let\old@makechapterhead\@makechapterhead
\def\@makechapterhead{\def\thechapter{\words{chapter}}\old@makechapterhead}
\makeatother
実行する
% \usepackage{etoolbox} %% uncomment if 'etoolbox' isn't already being loaded
\makeatletter
\patchcmd{\@makechapterhead}{\thechapter}{\words{chapter}}{}{}
\makeatother
余談: あなたのコードを私のシステム(MacOSX 10.9.2、すべてのパッケージが完全に最新のTeXLive2104/pre)でコンパイルするために、\usepackage{titletoc}
あなたのプリアンブルにある命令をコメントアウトする必要がありました。直接または補助パッケージを介してパッケージをtitletoc
ロードしようとしているようですinputenc
。XeLaTeXでドキュメントをコンパイルする場合(ここでもロードしているため、これが当てはまるようですpolyglossia
)、inputenc
パッケージは次のようになります。ない読み込まれません。XeLaTeX (そして、LuaLaTeX も) は、UTF8 という 1 つの入力エンコード システムのみを処理できます。ごく最近までは、(または指定したパッケージの 1 つ) をロードすると警告メッセージのみが発行されていたと思います。しかし、TeXLive の最新の更新では、エラー メッセージが生成され、コンパイルがハングします。パッケージがすぐにアップグレードされ、読み込まれなくなるinputenc
ことを祈りましょう(特に、XeLaTeX または LuaLaTeX で実行している場合は読み込まれなくなります)。titletoc
inputenc