我正在使用 XeLaTeX 编译器在 overleaf 中编写代码。这是代码:
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{graphicx} % Required for inserting images
\usepackage{extarrows}
\usepackage{unicode-math}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage{tikz}
\usepackage{bidi}
\setmainfont{Times New Roman}
\begin{document}
\begin{RTL}
$\mathbb{R}$
\end{RTL}
\end{document}
我知道我“应该”编写代码的最小版本,但我需要在工作中使用所有这些包,因此我想要一个不会与其他包冲突的解决方案。
当我编译代码时,我得到:
感谢大家的帮助。
答案1
您显示的 R 不是问题,它是拉丁现代数学的设计,一旦您选择 unicode-math,它就是默认字体,在这里我使用 Stix Two,它与 Times Roman 文本字体兼容性更高。
我删除了 ams 包,因为它们不兼容unicode-math
并且会出现错误。
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{graphicx} % Required for inserting images
\usepackage{extarrows}
\usepackage{unicode-math}
%\usepackage{amsmath, amsfonts, amssymb}
\usepackage{tikz}
\usepackage{bidi}
\setmainfont{Times New Roman}
\setmathfont{STIX Two Math}
\begin{document}
\showoutput
\begin{RTL}
$\mathbb{R}$
\end{RTL}
\end{document}
另一种与 Times 兼容的数学字体具有黑板粗体,可能更接近您的要求,那就是 TeX Gyre Termes,它能产生
从
\setmathfont{TeX Gyre Termes Math}
答案2
这不是唯一的问题:如果你尝试
$\mathbb{R}+x+y+z$ \textit{xyz} $x$\textit{x}
您不仅会得到不喜欢的黑板粗体字母,而且文本和数学之间的字体也会发生冲突:
为了获得与 Times New Roman 兼容的数学字体,您可以选择 STIX Two Math,但黑板粗体可能再次不符合您的喜好。不过,您可以将黑板粗体块替换为具有您喜欢的字形的其他字体。
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{graphicx} % Required for inserting images
\usepackage{extarrows}
\usepackage{unicode-math}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{bidi}
\setmainfont{Times New Roman}
\setmathfont{STIX Two Math}[Scale=MatchLowercase]
\setmathfont{TeX Gyre Termes Math}[range=\mathbb,Scale=MatchLowercase]
\setmathfont{STIX Two Math}[Scale=MatchLowercase,range=]
\begin{document}
$\mathbb{R}+x+y+z$ \textit{xyz} $x$\textit{x}
\end{document}
最后一个指令range=
用于恢复 STIX Two Math 的字体参数。您可能只使用 TeX Gyre Termes Math 来处理所有事情,但它的完整性远不如其他字体。
请注意amssymb
和amsfonts
不应与 一起加载unicode-math
。