使用多语进行等式编号

使用多语进行等式编号

当方程式位于环境中时,此简短代码会生成一个用斜体字体枚举的方程式theorem。如何用普通字体书写?如果我删除该段\setdefaultlanguage[Script=Cyrillic]{serbian},那么我就能得到我需要的内容,但我需要将此段放在序言中,因此任何其他解决方案都会有所帮助。

\documentclass[10pt, b5paper]{book}

\usepackage[no-math]{fontspec}
\usepackage{polyglossia}

\usepackage{amsmath, amssymb, ntheorem}

\setdefaultlanguage[Script=Cyrillic]{serbian}

\newfontfamily{\serbianfont}[Mapping=ascii-to-serbian, Script=Cyrillic, Language=Serbian]{DejaVu Serif}
%\newfontfamily{\serbianfonttt}{DejaVu Serif}

\theoremheaderfont{\normalfont\bfseries\upshape}
\theorembodyfont{\itshape}
\theoremseparator{.}
\newtheorem{theorem}{Teorema}[section]


\begin{document}

\begin{theorem}Th.....

    \begin{equation}
    a=b
    \end{equation}
    \end{theorem}

\end{document}

答案1

mathtools使用和的解决方案ntheorem:我定义一个可以完成该工作的标签样式,并使用以下命令将其合并到类似定理的环境中\theoremprework

\documentclass[10pt, b5paper]{book}

\usepackage[no-math]{fontspec}
\usepackage{polyglossia}

\usepackage{mathtools, amssymb, ntheorem}

\newtagform{thm}{\upshape(}{)}

\setdefaultlanguage[Script=Cyrillic]{serbian}

\newfontfamily{\serbianfont}[Mapping=ascii-to-serbian, Script=Cyrillic, Language=Serbian]{DejaVu Serif}
%\newfontfamily{\serbianfonttt}{DejaVu Serif}
\theoremprework{\usetagform{thm}}
\theoremheaderfont{\normalfont\bfseries\upshape}
\theorembodyfont{\itshape}
\theoremseparator{.}
\newtheorem{theorem}{Teorema}[section]


\begin{document}

\begin{theorem}Th.....
    \begin{equation}
    a=b
    \end{equation}
\end{theorem}

\end{document} 

在此处输入图片描述

答案2

我想说这是 Polyglossia 中的一个错误,它重新定义了\normalfont(它必须这样做),但还没有到强加直立形状和中等系列的程度。

例如,\textbf{abc\normalfont def}将以粗体打印所有内容。

我不完全确定我提出的补丁是最好的,但在特定情况下它是有效的。

\documentclass[10pt, b5paper]{book}

\usepackage{amsmath, amssymb, ntheorem}
\usepackage[no-math]{fontspec}
\usepackage{polyglossia}
\usepackage{xpatch} % for the following patch

\setdefaultlanguage[Script=Cyrillic]{serbian}

% the patch to the redefined \normalfont
\AtBeginDocument{%
  \xapptocmd\normalfont
  {\fontshape{\shapedefault}%
   \fontseries{\seriesdefault}%
   \selectfont}
  {}{}%
}

\newfontfamily{\serbianfont}[
  Mapping=ascii-to-serbian,
  Script=Cyrillic,
  Language=Serbian,
  Extension=.ttf,
  UprightFont=*,
  ItalicFont=*-Italic,
  BoldFont=*-Bold,
  BoldItalicFont=*-BoldItalic,
]{DejaVuSerif}
%\newfontfamily{\serbianfonttt}{DejaVu Serif}

\theoremheaderfont{\normalfont\bfseries\upshape}
\theorembodyfont{\itshape}
\theoremseparator{.}
\newtheorem{theorem}{Teorema}[section]


\begin{document}

\textbf{abc\normalfont def}

\begin{theorem}
Th.....
\begin{equation}
    a=b
\end{equation}
\end{theorem}

\end{document}

在此处输入图片描述

相关内容