当方程式位于环境中时,此简短代码会生成一个用斜体字体枚举的方程式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}