RTL 定理编号问题 - mdframed 和 xelatex

RTL 定理编号问题 - mdframed 和 xelatex

使用 mdframed 定理样式时,我遇到了编号顺序错误的问题。与 MWE 一样,第二个定理编号应为 2.1.1(从右到左阅读,1.1 为章节,2 为定理编号),但计数器出现在章节编号和章节编号的中间。

我尝试使用重新定义计数器

\renewcommand{\thetheorem}{\arabic{theorem}.\thesection}

但它不起作用。

\documentclass{book}

\usepackage[framemethod=tikz]{mdframed}
\usepackage{amsmath, amssymb}

\usepackage{polyglossia}
\setdefaultlanguage[locale=morocco]{arabic} 
\setmainfont{Times New Roman}

\mdtheorem{theorem}{Theorem}[section]

\renewcommand{\thetheorem}{\arabic{theorem}.\thesection}

\begin{document}

\chapter{A chapter}
\section{A section}

\begin{theorem}
  There exists some $x$ such that $x^2=2$.
\end{theorem}

\begin{theorem}[A second theorem]
  For all $x, y \in \mathbb{R}$:
  \begin{itemize}
    \item $x(-y) = (-x)y = -(xy)$:
    \item $(-x)(-y) = xy$.
  \end{itemize}
\end{theorem}

\end{document}

答案1

这个问题很微妙,我还不太明白为什么会发生这种情况。不幸的是,我很累,明天早上之前还有很多事情要做,所以今晚我没有时间解决这个问题,但我有一个解决办法。

如果删除将文档文本设置为阿拉伯语的行:

\usepackage{polyglossia}
\setdefaultlanguage[locale=morocco]{arabic} 
\setmainfont{Times New Roman}

然后问题就消失了。这让我想到这也许polyglossia是导致冲突的原因,直到我开始阅读多语文献

请注意,对于阿拉伯语,不能使用环境arabic,这\arabic是 LATEX 内部定义的。在这种情况下,我们需要使用环境Arabic

虽然这会关闭阿拉伯文本,但它也会关闭 RTL,而这正是问题的根源。

如果使用此命令:

\renewcommand{\thetheorem}{\arabic{theorem}.\thesection}

然后定理编号被打印为“section.theorem.chapter”。我认为这与 RTL 转换器有点混乱有关,当它扩展时\thesection,事情就变得混乱了。

如果我们不依赖于\thesection打印部分编号,而是使用\arabic宏自己构建它并直接访问计数器,它似乎工作正常:

\renewcommand{\thetheorem}{\arabic{theorem}.\arabic{section}.\arabic{chapter}}

知道如何\thesection扩展的人也许可以解释为什么会发生这种情况;如果不能,我会尝试在早上解决它。


以下是我所使用的 MWE:

\documentclass{book}

\usepackage[framemethod=tikz]{mdframed}

\usepackage{amsmath, amssymb}

\usepackage{polyglossia}
\setdefaultlanguage[locale=morocco]{arabic} 
\setmainfont{Times New Roman}

\mdtheorem{theorem}{Theorem}[section]
%\renewcommand{\thetheorem}{\arabic{theorem}.\thesection}
\renewcommand{\thetheorem}{\arabic{theorem}.\arabic{section}.\arabic{chapter}}

\newcommand*{\exampletheorems}{
\begin{theorem}
  There exists some $x$ such that $x^2=2$.
\end{theorem}
\begin{theorem}[A second theorem]
  For all $x, y \in \mathbb{R}$:
  \begin{itemize}
    \item $x(-y) = (-x)y = -(xy)$;
    \item $(-x)(-y) = xy$.
  \end{itemize}
\end{theorem}
}

\begin{document}

\chapter{}
\section{}

\exampletheorems

\section{}

\exampletheorems

\chapter{}
\section{}

\exampletheorems

\end{document}

以下是截图:

在此处输入图片描述

答案2

这似乎有效,但可能会产生不良副作用,所以我怀疑这是否真的是一个解决方案。我会等待看看 alexwlchan 的解决方案,它可能更好:

\documentclass{book}

\usepackage[framemethod=tikz]{mdframed}
\usepackage{amsmath, amssymb}

\usepackage{polyglossia}
\setdefaultlanguage[locale=morocco]{arabic}
\setmainfont{Times New Roman}

\mdtheorem{theorem}{Theorem}[section]

\renewcommand{\thetheorem}{\arabic{theorem}.\thesection}
\renewcommand{\thesection}{\arabic{section}.\thechapter}

\begin{document}

\chapter{A chapter}
\section{A section}

\begin{theorem}
  There exists some $x$ such that $x^2=2$.
\end{theorem}

\begin{theorem}[A second theorem]
  For all $x, y \in \mathbb{R}$:
  \begin{itemize}
    \item $x(-y) = (-x)y = -(xy)$:
    \item $(-x)(-y) = xy$.
  \end{itemize}
\end{theorem}

\end{document}

2.1.1

答案3

我得到了相同的结果(仅当使用 RTL 时定理头右侧的空间: \setdefaultlanguage[locale=morocco]{arabic})。但是,我认为这个问题与 mdframed 有关...因为当使用 framed 和 ntheorem 时问题就消失了。

\documentclass[12pt,a4paper]{book}
\usepackage[x11names]{xcolor}
\usepackage{amssymb}
\usepackage{framed}
\usepackage[framed]{ntheorem}

\newframedtheorem{theorem}{مبرهنة}[section]

\renewcommand{\thetheorem}{\arabic{theorem}.\arabic{section}.\arabic{chapter}}

% LANGUAGES AND FONTS SPECS --------------------------------------------

\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[locale=morocco]{arabic} 
\defaultfontfeatures{Ligatures=TeX,%
Mapping=tex-text,%
AutoFakeSlant=0.4%Simulate Italic
}
\setmainfont{Times New Roman}

\begin{document}

\chapter{}

\section{}

\begin{theorem}
 لا يوجد عدد جذري حلا للمعادلة:
   $x^2=2$.
 \end{theorem}

 \begin{theorem}[قاعدة الإشارة]
لكل  $x$ و $y$ من
   $\mathbb{R}$
  لدينا،
\begin{itemize}
\item $x(-y) = (-x)y = -(xy)$،
\item $(-x)(-y) = xy$.
\end{itemize}
\end{theorem}
\end{document}

以下是屏幕截图: 在此处输入图片描述

当使用 mdframed 而不是 framed 时会出现问题(仅适用于 RTL 文档):

\documentclass[12pt,a4paper]{book}
\usepackage[x11names]{xcolor}
\usepackage{amssymb} 
\usepackage[framemethod=tikz]{mdframed}

\mdtheorem{theorem}{مبرهنة}[section]

\newmdtheoremenv{theorem1}{مبرهنة}[section]

\renewcommand{\thetheorem}{\arabic{theorem}.\arabic{section}.\arabic{chapter}}


% LANGUAGES AND FONTS SPECS --------------------------------------------

\usepackage{xltxtra}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=gregorian,hijricorrection=1,locale=morocco]{arabic} 
\defaultfontfeatures{Ligatures=TeX,%
Mapping=tex-text,%
AutoFakeSlant=0.4%Simulate Italic
}
\setmainfont{Times New Roman}

\begin{document}

\chapter{}

\section{}

\begin{theorem}
 لا يوجد عدد جذري حلا للمعادلة:
   $x^2=2$.
 \end{theorem}

 \begin{theorem}[قاعدة الإشارة]
لكل  $x$ و $y$ من
 $\mathbb{R}$
  لدينا
\begin{itemize}
\item $x(-y) = (-x)y = -(xy)$،
\item $(-x)(-y) = xy$.
\end{itemize}
\end{theorem}

\begin{theorem1}
 لا يوجد عدد جذري حلا للمعادلة:
   $x^2=2$.
 \end{theorem1}

 \begin{theorem1}[قاعدة الإشارة]
لكل  $x$ و $y$ من
 $\mathbb{R}$،
  لدينا
\begin{itemize}
\item $x(-y) = (-x)y = -(xy)$،
\item $(-x)(-y) = xy$.
\end{itemize}
\end{theorem1}
\end{document}

现在给出:

1

答案4

检查bidi第 12 页(第 1.13 节)上的软件包文档;您将需要使用\@SepMark而不是.

相关内容