我有一个简单的 LaTex 文件,如下所示:
\documentclass{book}
\usepackage{xepersian}
\settextfont{B Zar}
\makeatletter
\bidi@patchcmd{\Hy@org@chapter}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}#1}%
}{%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\chaptername~\tartibi{chapter}}#1}%
}{}{}
\makeatother
\begin{document}
\tableofcontents
\chapter{سلم}
\section{یبسیبسیب}
\chapter{بثیبسیب}
\section{یبسیبسیب}
\end{document}
但目录中的章节仍然带有数字。
我也将文件改为下面的文件,但什么都没改变。
\documentclass{book}
\usepackage{xepersian}
\settextfont{B Zar}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\chaptername~\tartibi{chapter}}#1}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
\begin{document}
\tableofcontents
\chapter{سلم}
\section{یبسیبسیب}
\chapter{بثیبسیب}
\section{یبسیبسیب}
\end{document}
答案1
这\Hy@org@chapter
是一个 hyperref 宏。但即使加载hyperref
补丁尝试也会失败,因为原始定义看起来不像您提供的定义(您可以使用最后一个参数来激活“失败”分支以指示问题)。
按照第二种方法,它似乎有效,但是您需要\makeatletter/\makeatother
。