如何使用 XeLaTeX 获取类似 \Box 的符号

如何使用 XeLaTeX 获取类似 \Box 的符号

下面的源代码在处理时pdflatex会产生此处显示的数学符号:

单位平方符号

但是如果我用处理源xelatex,我会收到错误:

./unitsquare.tex:26: LaTeX Error: Command \Box not provided in base LaTeX2e.

问题:我怎样才能xelatex使用正在使用的字体来获取该符号?

\documentclass{article}

\usepackage[T2A,T1]{fontenc}
\usepackage{amsmath}    % avoid \dddot clash
\usepackage{mathtools}  % avoid unicode-math clash
\usepackage{amsthm} % avoid openbox clash

\usepackage{iftex}
\ifTUTeX
  \usepackage{fontspec}
  \usepackage{unicode-math}
  \setmainfont{TeX Gyre Termes}[Scale=1.0]
  \defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
  \setmathfont{TeX Gyre Termes Math}
\else
  \usepackage{newtxtext}  
  \usepackage{newtxmath}
\fi

\usepackage{scalerel}

\newcommand{\unitsq}{\mathord{\scalerel*{\Box}{X}}}

\begin{document}

The unit square is denoted by $\unitsq$.

\end{document}

有关的: 这些“圆形”和“方形”要怎样输入呢?

答案1

您可能以为您可以编写一份同时使用pdflatex和编译的文档xelatex。但事实并非如此。

无论如何,您可能正在寻找的符号\lgwhtsquare对应于 U+2B1C 白色大方块,不幸的是,TeX Gyre Termes Math 或 不提供该符号\mdlgwhtsquare,对应于 U+25A1 白色方块。

如果您想将符号缩放到大写字母的高度,您可以使用graphicx(或scalerel,如果您愿意)。

\documentclass{article}

\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{graphicx}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Termes}
\setmathfont{TeX Gyre Termes Math}

\newcommand{\unitsq}{\text{\resizebox{!}{\fontcharht\font`X}{$\mdlgwhtsquare$}}}

\begin{document}

The unit square is denoted by $\unitsq$.

\end{document}

在此处输入图片描述

尝试获取一份“通用”文档:

\documentclass{article}
\usepackage{iftex}

\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{graphicx}

\iftutex
  \usepackage{fontspec}
  \usepackage{unicode-math}
  \setmainfont{TeX Gyre Termes}
  \setmathfont{TeX Gyre Termes Math}
\else
  \usepackage[T1]{fontenc}
  \usepackage{newtxtext,newtxmath}
\fi

\iftutex
  \newcommand{\unitsq}{\text{\resizebox{!}{\fontcharht\font`X}{$\mdlgwhtsquare$}}}
\else
  \newcommand{\unitsq}{\text{\resizebox{!}{\fontcharht\font`X}{$\Box$}}}
\fi

\begin{document}

The unit square is denoted by $\unitsq$.

\end{document}

pdflatex得到了

在此处输入图片描述

为什么 LaTeX 拒绝\Box?因为amssymb除非字体包(例如)newtxmath本身提供 AMS 符号,否则您需要它。不,unicode-math不提供\Box。也许它应该……

答案2

如果您想要比 TeX Gyre Termes Math 更大的方块,您可以从另一个数学字体中借用一个。

\documentclass{article}
\usepackage{unicode-math}

\setmainfont{TeX Gyre Termes}
\setmathfont{TeX Gyre Termes Math}
\setmathfont{STIX Two Math}[
  range=\lgwhtsquare,
  Scale=MatchUppercase ]
\newcommand\unitsq{\lgwhtsquare}

\begin{document}

The unit square is denoted by $\unitsq$.

\end{document}

TeX Gyre Termes + STIX 两个样本

中有许多白色方块,unicode-math包括\lgwhtsquare、、和。如果这些都不是您想要的确切大小,您甚至可以使用调整后的选项加载其中任何\mdlgwhtsquare一个。\mdwhtsquare\mdsmwhtsquare\smwhtsquareScale=

相关内容