章节的“文字”和数字编号

章节的“文字”和数字编号

我问另一个与这个问题相关的问题 按“文字”编号章节,但不按内容编号 这并不“精确”......这个问题是确切的问题,举一个例子......

此示例在章节的第一页中给出了章节“一”和“二”(这是我想要的),在内容中给出了章节“1”和“二”(这不是我想要的……)。我想在文本中获得相同的内容,但在内容中得到“1”和“2”……那么如何将章节标题更改为数字……我希望第 1 节的标题为“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。我认为直到最近,如果您(或您指定的包之一)加载,只会发出一条警告消息inputenc;使用 TeXLive 的最新更新会生成一条直接错误消息并且编译会挂起。让我们都希望该titletoc包很快升级到不再加载inputenc(尤其是在 XeLaTeX 或 LuaLaTeX 下运行时)。

相关内容