\theoremindent 与 RTL 语言一起使用时会在左侧添加空格

\theoremindent 与 RTL 语言一起使用时会在左侧添加空格

当与从右到左的语言一起使用时,尝试使用ntheorem's\theoremindent似乎会缩进左侧而不是右侧:polyglossia

\documentclass{article}

\usepackage{ntheorem}
\theoremindent2cm
\theorembodyfont{\normalfont}
\theoremseparator{:}
\newtheorem{theorem}{משפט}

\usepackage{polyglossia}
\setdefaultlanguage[calendar=hebrew, numerals=arabic]{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont{David CLM}

\begin{document}
א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א א
\begin{theorem}
ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב ב
\end{theorem}
\end{document}

在此处输入图片描述

这能修复吗?

此外,编号和分隔符似乎显示错误。

答案1

ntheorem-hyper.sty中(或ntheorem.sty,取决于您的分布)有问题的行似乎是:

\newdimen\theoremindent
\global\theoremindent0cm
\newdimen\theorem@indent
%...
\advance\@totalleftmargin \theorem@indent
\parshape \@ne \@totalleftmargin \linewidth

因此,毫不奇怪,ntheorem假设边距在左边。这是建议的微补丁,部分归功于@egreg:

\usepackage{ntheorem}
\usepackage{etoolbox}
\makeatletter
\@ifpackageloaded{polyglossia}{
\patchcmd{\@thm}
  {\advance\@totalleftmargin\theorem@indent}
  {\if@RTL\else\advance\@totalleftmargin\theorem@indent\fi}
  {}{}
}
\makeatother

这应该可以适应其自身的补丁ntheorem-hyper.sty

相关内容