如何反转从右到左语言的章节编号?

如何反转从右到左语言的章节编号?

我使用 XePersian 排版波斯语,但我不想让我的章节编号被镜像!例如,第 3-1 节写成第 1-3 节,这很尴尬!所以,我想要回我的编号 :-)

该问题不仅限于章节,还影响小节、图表和表格编号;所以我需要一个解决方案来解决所有这些问题。

我要这个:

1-1
1-2
1-3
1-4
...

当然不是:

1-1
2-1
3-1
4-1
...

这是一个最小的工作示例:

\documentclass{book}

\usepackage{xepersian}
\settextfont[Scale=1]{Arial}
\setlatintextfont[Scale=1]{Arial}
\setdigitfont[Scale=1]{Arial}

\SepMark{-}

\begin{document}
\tableofcontents
\chapter{فصل}
\section{اول}
\section{دوم}
\section{سوم}
\section{چهارم}
\end{document}

答案1

使用来自的解决方案修复使用多语言的 RTL 语言中的嵌套章节编号(不,我还没有弄清楚为什么这样做有效):

\documentclass{book}    
\usepackage{polyglossia}
\setmainlanguage[numerals=western]{farsi}
\newfontfamily\arabicfont{Arial}
\makeatletter
\renewcommand{\SepMark}[1]{\def\@SepMark{#1}}
\makeatother
\SepMark{-}

\begin{document}
\tableofcontents
\chapter{فصل}
\section{اول}
\section{دوم}
\section{سوم}
\section{چهارم}
\end{document}

在此处输入图片描述

作为参考,如果没有\renewcommand上述内容,\SepMark则从比迪烟包装是:

\def\SepMark#1{\gdef\@SepMark{\if@RTL\fi#1\if@RTL\fi}}

并使用带有波斯语编号的原始文档,重新定义\SepMark作品。我这样做只是polyglossia为了紧凑。

答案2

以上答案是正确的。我添加此答案是为了参考。应该将以下几行添加到问题提供的 MWE 中:

\makeatletter
\def\SepMark#1{\gdef\@SepMark{\if@RTL\fi#1\if@RTL\fi}}
\makeatother

因此,这将按预期工作:

\documentclass{book}

\usepackage{xepersian}
\settextfont[Scale=1]{Arial}
\setlatintextfont[Scale=1]{Arial}
\setdigitfont[Scale=1]{Arial}

\makeatletter
\def\SepMark#1{\gdef\@SepMark{\if@RTL\fi#1\if@RTL\fi}}
\makeatother
\SepMark{-}

\begin{document}
\tableofcontents
\chapter{فصل}
\section{اول}
\section{دوم}
\section{سوم}
\section{چهارم}
\end{document}

修复 XePersian 中的章节编号问题

它修复了所有章节编号以及公式、图表和表格编号的问题。

答案3

正如其他人所说,你问的是错的,确实很奇怪;xepersian自 2008 年以来一直存在,这是我第一次听到这样的事情。假设你正在使用书籍文档类,第五章中的第三个方程式编号为3.5;这不再是一个数字。由于你是从右到左书写的,第一个数字是你的章节编号,最后一个是你的方程式编号。这是编号微软 Word因为5.3MS Word 自动应用了 unicode bidi 算法,但这并不意味着它是正确的;我建议联系您的大学并询问。您看到的行为xepersian肯定是故意为之,而且有充分的理由。

相关内容