
Я задаю еще один вопрос, связанный с этим «Буквальная» нумерация глав, но не в содержании который не был «точным»... Этот вопрос точный, с примером...
Этот пример дает мне главы "one" и "two" на первых страницах глав (и это то, что я хочу), а в содержании "1" и "two" (и это не то, что я хочу..). Я хочу получить то же самое в тексте, но в содержании "1" и "2".. Тогда как изменить заголовок главы, чтобы он был числовым.. Я хочу, чтобы для раздела 1 было "1.1", а не "one.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
. Поскольку похоже, что вы загружаетеetoolbox(В любом случае, у вас будет доступ к \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).