使用 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}
答案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}
现在给出:
答案4
检查bidi
第 12 页(第 1.13 节)上的软件包文档;您将需要使用\@SepMark
而不是.
。