章の「文字どおりの」番号と数字による番号付け

章の「文字どおりの」番号と数字による番号付け

これに関連してもう一つ質問します 章の番号は「文字通り」だが、内容には番号が付かない それは「正確」ではありませんでした...この質問は例付きの正確な質問です...

この例では、章の最初のページに章「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 で実行している場合は読み込まれなくなります)。titletocinputenc

関連情報