下面的源代码在处理时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}
中有许多白色方块,unicode-math
包括\lgwhtsquare
、、和。如果这些都不是您想要的确切大小,您甚至可以使用调整后的选项加载其中任何\mdlgwhtsquare
一个。\mdwhtsquare
\mdsmwhtsquare
\smwhtsquare
Scale=