公式编号括号问题

公式编号括号问题

我正在尝试使用 TeXstudio 和 XeLaTeX 用 LaTeX 写一篇文章,因为我用阿拉伯语写作。我在给方程式编号时遇到了问题。它看起来像这样:

在此处输入图片描述

方程的编号以)1(而不是出现(1)

该文件的序言如下:

\documentclass[b5paper,12pt]{article}
\usepackage{amsmath} 
\usepackage{graphicx}
\usepackage{polyglossia}
\usepackage[LFE,LAE]{fontenc}
\usepackage{titlesec}
\usepackage{fmtcount}
\usepackage[margin=0.75in]{geometry}
\usepackage{fontspec}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{hypcap}



\usepackage[backend=biber,bibencoding=utf8,style=ieee]{biblatex}
\providecommand{\keywords}[1]{\textbf{\textit{الكلمات المفتاحية: }} #1}
%Language settings for polyglossia
\setmainlanguage{arabic}
\setotherlanguage{english}
\setmainfont{Simplified Arabic}
\newfontfamily\arabicfont[Script = Arabic]{Simplified Arabic} 

\let\arabicfonttt\ttfamily
\setkeys{arabic}{numerals=maghrib,locale=mashriq,calendar=gregorian}
\renewcommand{\thesection}{\arabic{section}~}
\renewcommand{\thesubsection}{\thesection-~\arabic{subsection}~}
\renewcommand{\thesubsubsection}{\thesubsection-~\arabic{subsubsection}~}

\titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection-~}{0.5em}{\normalfont\normalsize\bfseries}
\titleformat{\subsection}{\normalfont\normalsize\bfseries}{\thesubsection-~}{0.5em}{\normalfont\normalsize\bfseries}

\titleformat{\subsubsection}{\normalfont\normalsize\bfseries}{\thesubsubsection-~}{0.5em}{\normalfont\normalsize\bfseries}

\DeclareDocumentCommand{\printbib}{o}{\printbibheading
    \begin{english}
        \providecommand*{\MakeUppercase}[1]{#1}
        \printbibliography[heading=none]
\end{english}}

方程式为:

\begin{equation}
\label{equation:psnr}
PSNR=10\log_{10}{\frac{MAX^{2}}{\frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}\left[I(i,j)-K(i,j)\right]^{2}}}
\end{equation}

我尝试过amsmath,但mathtools没有成功,我尝试\csname @Latintrue\endcsname在之后添加\thenewfontfamily,但仍然没有成功

答案1

这里的基本问题是amsmath尝试用默认语言阿拉伯语设置方程标签。混合拉丁字符和阿拉伯文字会使双向算法混乱。

如果您的阿拉伯字体不支持阿拉伯文字中的括号,那么您唯一会遇到的错误就是文件中隐藏的一条静默警告消息log。这是几十年前的一个极其糟糕的设计决定,您至少可以在控制台中看到有关阿拉伯字体的警告消息()并通过添加命令替换默认的从左到右字体\tracinglostchars=2

有几个修复。

加载更好的阿拉伯字体

Khaled Hosny 的 Amiri 设置了括号,使其在阿拉伯语中正常工作。在这里,我加载了 Hosny 的 Libertinus 系列作为匹配的文本和数学字体。这会引入unicode-math并加载 Libertinus Math 作为您的 OpenType 数学字体。如果您不想加载unicode-math但希望字体匹配,您可以加载\usepackage{libertine}\usepackage[libertine]{newtxmath}

\documentclass[b5paper,12pt]{article}
\usepackage{mathtools} 
\usepackage{graphicx}
\usepackage{polyglossia}
\usepackage{libertinus} % Or perhaps \usepackage[libertine]{newtxmath}
\usepackage{titlesec}
\usepackage{fmtcount}
\usepackage[margin=0.75in]{geometry}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{hypcap}

\tracinglostchars=2 % Warn when a character is missing!

\usepackage[backend=biber,bibencoding=utf8,style=ieee]{biblatex}
\providecommand{\keywords}[1]{\textbf{\textit{الكلمات المفتاحية: }} #1}
%Language settings for polyglossia
\setmainlanguage{arabic}
\setotherlanguage{english}

\defaultfontfeatures{Scale=MatchLowercase}
\newfontfamily\arabicfont[Script = Arabic]{Amiri}
\newfontfamily\arabicfontsf[Script = Arabic]{Noto Sans Arabic}

\setkeys{arabic}{numerals=maghrib,locale=mashriq,calendar=gregorian}
\renewcommand{\thesection}{\arabic{section}~}
\renewcommand{\thesubsection}{\thesection-~\arabic{subsection}~}
\renewcommand{\thesubsubsection}{\thesubsection-~\arabic{subsubsection}~}

\titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection-~}{0.5em}{\normalfont\normalsize\bfseries}
\titleformat{\subsection}{\normalfont\normalsize\bfseries}{\thesubsection-~}{0.5em}{\normalfont\normalsize\bfseries}

\titleformat{\subsubsection}{\normalfont\normalsize\bfseries}{\thesubsubsection-~}{0.5em}{\normalfont\normalsize\bfseries}

\DeclareDocumentCommand{\printbib}{o}{\printbibheading
    \begin{english}
        \providecommand*{\MakeUppercase}[1]{#1}
        \printbibliography[heading=none]
    \end{english}}

\begin{document}
\begin{equation}
\label{equation:psnr}
\mathrm{PSNR}=10\log_{10}{\frac{\mathrm{MAX}^{2}}{\frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}\left[I(i,j)-K(i,j)\right]^{2}}}
\end{equation}
\end{document}

Amiri/Libertinus 样本

我从序言中删除了一些过时或多余的软件包,例如fontencUnicode 模式。我还擅自对输出进行了轻微的调整

重新定义标签格式

mathtools软件包包含一个命令\newtagform,您可以使用它来重新定义方程数字的格式。要以英文显示数字而不带括号,您可以声明

\newtagform{english}[\textenglish]%
{}%
{}
\usetagform{english}

如果您尝试在分隔符上使用\textenglishLTR,它们仍然会以错误的方式显示,但您可以作为一种无法更改的字体的丑陋解决方法,显示)为您的开幕分隔符,并(作为您的结束定界符。

\newtagform{english}[\textenglish]%
{\textenglish{)}}%
{\textenglish{(}}
\usetagform{english}

将英语设置为默认语言

然后在文档开始时将当前语言切换为阿拉伯语。

附言

截至 2020 年,最新发行版修复了 Windows 10 中简体阿拉伯语的问题,但我仍然可以使用某些其他字体(例如 Noto Naskh Arabia)重现它。

相关内容