我想定义一个数学符号\dbar
,它通常会显示斜体版本,但当它出现在里面时会直立显示\mathrm
。
我的天真尝试是这样的
\documentclass{article}
\usepackage{stix2}
\DeclareSymbolFont{stix2-italic}{T1}{stix2}{m}{it}
\DeclareSymbolFont{stix2-upright}{T1}{stix2}{m}{n}
\DeclareMathSymbol{\dbar}{\mathalpha}{stix2-italic}{158}
\DeclareMathSymbol{\updbar}{\mathalpha}{stix2-upright}{158}
\begin{document}
$\dbar \mathrm{\dbar} \updbar$
\end{document}
输出:
这是预期的,因为stix2
包LS1
对 使用了 encoding \mathrm
,其⪯
在位置 158 处有,而T1
encodingđ
在该位置有。
有没有办法定义命令\dbar
以便它显示为
\DeclareMathSymbol{\dbar}{\mathalpha}{stix2-italic}{158}
正常但显示为
\DeclareMathSymbol{\updbar}{\mathalpha}{stix2-upright}{158}
当它出现在范围内时\mathrm
?我不想修改stix2
包或其他字形如何与 交互\mathrm
。我还想听听涉及unicode-math
包裹。
答案1
有两种不同的\mathrm
含义:直立的数学符号(例如 ISO 样式中的常量)和数学模式下的短行文本。
Unicode 和 T1 编码均具有 đ (U+0111) 字符,即 其本身 或\dj
,因此您可以设置\mathrm
为任一编码并使用\mathrm{\dj}
。
但是,您更可能希望使用\text
fromamsmath
或amstext
或类似命令来定义此命令。一对用于直立和斜体数学符号的命令可能是:
\newcommand\dstrokeup{\textup{\dj}}
\newcommand\dstrokeit{\textit{\dj}}
如果您确实想要一个根据您处于数学模式还是文本模式而改变其形状的命令,那么可以是:
\documentclass{article}
\usepackage{iftex}
\usepackage{amsmath}
\iftutex
\usepackage{fontspec}
\else
\usepackage[T1]{fontenc}
\fi
\newcommand\dstroke{%
\ifmmode{\textit{\dj}}%
\else{\dj}%
\fi}
\begin{document}
\( \dstroke \text{ is {\dstroke} in text mode.}\)
\end{document}