如何将目录中的单词 `پیوست اول` 更改为 `پیوست آ`

如何将目录中的单词 `پیوست اول` 更改为 `پیوست آ`

如何才能将单词更改پیوست اولپیوست آ目录中,请注意我的最小代码。

\documentclass{book}
\usepackage{zref-perpage}
\zmakeperpage{footnote}
\usepackage{titlesec}
\usepackage{titletoc,geometry}
\usepackage{calc}
\usepackage{amsthm,amssymb,amsmath}
\usepackage{etoolbox}
 % % % % % % % % % % % % % % % % % % %
\usepackage[numbers,sort&compress]{natbib}
\usepackage{standalone}
%\includeonly{context}
 \usepackage{pxfonts}
\usepackage{scrextend}
\usepackage{perpage}
\makeatletter
\def\@myharfi#1{\ifcase#1\or آ\or ب\or پ\or ت\or ث\or
    ج\or چ\or ح\or خ\or د\or ذ\or ر\or ز\or ژ\or س\or ش\or ص\or ض\or ط\or ظ\or ع\or غ\or ف\or ق\or ک\or گ\or ل\or م\or ن\or و\or هـ\or ی\else \@ctrerr\fi}
\def\myharfi#1{\expandafter\@myharfi\csname c@#1\endcsname}
\makeatother

\makeatletter
\patchcmd{\@chapter}{\addcontentsline{toc}{chapter}{\protect  \numberline{\thechapter}#1}}{\addcontentsline{toc}{chapter}{\protect{\numberline{\chaptername~\tartibi{chapter} :  #1}}}}{}{}
%\fi
\patchcmd{\l@chapter}{\setlength\@tempdima{1.5em}}{\setlength\@tempdima{4.5em}}{}{}
\long\def\@subcaption#1[#2]#3{%
 \par
  \addcontentsline{\csname ext@#1\endcsname}{#1}%
   {\protect\numberline{\csname #1name\endcsname{} \csname the#1\endcsname}{\ignorespaces #2}}%
 \begingroup
   \@parboxrestore
    \if@minipage
      \@setminipage
    \fi
     \normalsize
   \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
 \endgroup}

 \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
 \renewcommand*\l@subsection{\@dottedtocline{1}{3em}{4.3em}}
 \renewcommand*\l@figure{\@dottedtocline{1}{1.5em}{3.3em}}
 \let\l@table\l@figure
 \let\stdl@chapter\l@chapter
 \renewcommand*{\l@chapter}[2]{\stdl@chapter{{#1}}{}}
 \makeatother

 \usepackage{hyperref}
 \usepackage{xepersian}
 \begin{document}
 \tableofcontents
 \chapter{this is first chapter}
 \chapter{this is second chapter}

   \appendix
       \renewcommand{\chaptername}{پیوست}
    \chapter{this is first appendix}

     \end{document}

答案1

如果我正确理解了您的要求,您可以通过定义\mynumberstyle在修补的章节命令中使用的命令(而不是)来实现。然后,只需将该数字样式命令设置为文档开头,并将其重置为启动附录时\tartibi即可。\tartibi\myharfi

因此,您要做的就是\patchcmd\@chapter将以以下内容开头的行替换为

\newcommand\mynumberstyle[1]{\tartibi{#1}}
\patchcmd{\@chapter}{\addcontentsline{toc}{chapter}{\protect  \numberline{\thechapter}#1}}{\addcontentsline{toc}{chapter}{\protect{\numberline{\chaptername~\mynumberstyle{chapter} :  #1}}}}{}{}

然后,紧接着\appendix,添加

\renewcommand\mynumberstyle[1]{\myharfi{#1}}

希望这可以帮助。

附言:您的示例确实不够简洁,不足以展示您想要实现的目标。\makeatletter和之间的大多数自定义代码\makeatother根本没有必要,而且您加载了太多包。下次您寻求帮助时,请尝试缩小示例,这对试图帮助您的人更友好,而且您尝试分析您想要实现的目标也是在帮自己一个忙。

相关内容