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