如何使用 TeX Gyre Termes (或 Pagella) 获得 \Diamond 和 \square?

如何使用 TeX Gyre Termes (或 Pagella) 获得 \Diamond 和 \square?

如果我使用 TeX Gyre Termes 或 TeX Gyre Pagella,我该如何生成与符号\square\Diamond对应的符号?amsfonts

例如,XeLaTeXing 以下内容给出Undefined control sequence\square并且类似地,\Diamond如果行\square被注释掉)。

http://mirrors.ibiblio.org/CTAN/macros/latex/contrib/unicode-math/unimath-symbols.pdf,我知道 unicode-math 符号\enclosequare\enclosediamond,但前者比 amsfonts 大\square,而后者只是一个旋转的正方形,而不是更细的 amsfonts \Diamond;此外,ams 符号具有前导空格,而相应的 unicode-math 符号则没有。(要查看差异,请取消注释行% \RequirePackage{amsfonts}。)

\documentclass{article}

\RequirePackage{fontspec}
\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
\RequirePackage{unicode-math}
% Need amsmath first to avoid conflict for \dddot, etc.
\RequirePackage{amsmath}
\setmathfont{TeX Gyre Termes Math}
% Won't following overwrite def's of TeX Gyre Math symbols?
% \RequirePackage{amsfonts}

\begin{document}

$x=2$\\
$\enclosesquare$\\
$\enclosediamond$\\
$\square$\\
$\Diamond$

\end{document}

目的: 我希望这些符号严格用于证明结束,类似地,用于示例结束。我添加了一个建议答案,给出了我的解决方案。

答案1

amssymb提前加载unicode-math

\documentclass{article}

\usepackage{amsmath,amssymb}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmainfont{TeX Gyre Termes}
\setmathfont{TeX Gyre Termes Math}

\begin{document}

$x=2 + \square + \Diamond$

\end{document}

在此处输入图片描述

或者,使用字体中可用的符号:

\documentclass{article}

\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{unicode-math}

\setmainfont{TeX Gyre Termes}
\setmathfont{TeX Gyre Termes Math}

\newcommand{\square}{□}    % U+25A1
\renewcommand{\Diamond}{◊} % U+25CA

\begin{document}

$x=2 + \square + \Diamond$

\end{document}

在此处输入图片描述

答案2

您可以直接使用 unicode 字符,即 ♢ 和 □(代码点 U+2662 和 U+25A1),方法是在文档中键入它们,或者定义\newcommand(用于单独使用符号)或\DeclareMathOperator(用于将它们用作数学运算符)。例如,请参阅http://www.gust.org.pl/projects/e-foundry/tg-math/gust_e-foundry-math_fonts-presentation.pdf表示此字体中可用的符号。您还可以将原始amssymb命令与 TeX Gyre Termes Math 一起使用。请注意和\enclosesquare\enclosediamond组合字符,旨在将前一个字符括在正方形或菱形中。

一些例子:

\documentclass{article}

\RequirePackage{fontspec}
\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
\RequirePackage{unicode-math}
\RequirePackage{amsmath}
\RequirePackage{amsfonts}
\setmathfont{TeX Gyre Termes Math}

\newcommand\mydiamondsingle{♢}
\newcommand\mysquaresingle{□}
\DeclareMathOperator{\mydiamond}{♢}
\DeclareMathOperator{\mysquare}{□}

\begin{document}

$x=2$\\
$♢,\mydiamond,\Diamond,\quad x\enclosediamond$\\
$□,\mysquare,\square,\quad y\enclosesquare$\\

\end{document}

结果:

在此处输入图片描述

答案3

和分别amsmath \Diamond看起来\square更像\mdlgwhtlozenge\mdlgwhtsquare。但是,TeX Gyre Pagella Math 不包含\mdlgwhtsquare(截至 1.632 版)。

如果 Unicode 数学字体缺少特定的字形,或者您不喜欢它的外观,则可以使用选项从另一种字体中修补range=符号\setmathfont

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

\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{TeX Gyre Pagella}[Ligatures=Common, Scale=1.0]
\setmathfont{TeX Gyre Pagella Math}
\setmathfont[Scale=MatchUppercase,
             range={\mdlgwhtlozenge, \mdlgwhtsquare}
            ]{STIX Two Math}

\begin{document}

amssymb: \( x \Diamond y \square \)

Pagella with STIX Two: \( x \mdlgwhtlozenge y \mdlgwhtsquare \)
\end{document}

字体示例

自 2019 年 7 月起,range=不再与 一起使用version=。这主要在您使用粗体数学时导致问题。

答案4

这是我提出的解决方案https://tex.stackexchange.com/a/501596/13492但对正方形和菱形的字形进行了一些处理,使得它们在使用 XeLaTeX 时分别显示为校样结束和示例结束,与使用 pdfLaTeX 时的外观非常接近。

\documentclass{article}

\usepackage{amsthm} % load now to avoid openbox clash

\usepackage{iftex}
\ifTUTeX
  \usepackage{fontspec}
  \usepackage{unicode-math}
  \defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
  \setmainfont{TeX Gyre Termes}[Scale=1.0]
  \setmathfont{TeX Gyre Termes Math}
  \usepackage{graphicx}
   \newcommand\myDiamond{♢}
   \newcommand\mySquare{\raisebox{0.75pt}{\scalebox{0.93}{$□$}}}
   \mathchardef\timessymbol=\numexpr\times-"2000\relax
\else
  \RequirePackage[theoremfont]{newtxtext}
  \RequirePackage{newtxmath}%
  \DeclareMathAlphabet{\mathbfsf}{\encodingdefault}{\sfdefault}{bx}{n}
  \newcommand{\mySquare}{\square}
  \newcommand{\myDiamond}{\Diamond}
\fi

\renewcommand{\qed}{\quad\hbox{\qedsymbol}}% run-in QED
\renewcommand{\qedsymbol}{$\mySquare$}

\usepackage{thmtools}
%
\declaretheoremstyle[bodyfont=\mdseries\slshape]{thmstyle}
\declaretheorem[style=thmstyle,name=Theorem,numberwithin=section]{theorem}
%
\declaretheoremstyle[bodyfont=\normalfont]{exstyle}
\declaretheorem[
  style=exstyle,numberlike=theorem,
  preheadhook=\renewcommand{\qedsymbol}{$\myDiamond$}\pushQED{\qed},
  postfoothook=\popQED
  ]
{example}

\begin{document}
\section{Triangles}

\begin{theorem}
The square on the hypotenuse equals the sum of the squares on the other two sides.
\end{theorem}

\begin{proof}
Consider the following diagram\dots .
Thus
\[ a^{2} + b^{2} = c^{2}\qedhere\]
\end{proof}

\begin{example}
As a particular case, 
\[
3^{2} + 4^{2} = 5^{2}= c^{2 }\qedhere
\]
\end{example}

\end{document}

pdfLaTeX 的输出:

证明结束和示例结束,pdfLaTeX

XeLaTeX 的输出:

证明结束和示例结束,XeLaTeX

相关内容