我问另一个与这个问题相关的问题 按“文字”编号章节,但不按内容编号 这并不“精确”......这个问题是确切的问题,举一个例子......
此示例在章节的第一页中给出了章节“一”和“二”(这是我想要的),在内容中给出了章节“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 下运行时)。