在文本模式下使用数学模式关系符号并优化间距

在文本模式下使用数学模式关系符号并优化间距

我希望在文本模式下能够轻松访问常用的关系符号,就像在数学模式下可以轻松访问它们一样。一个重要的例子是 ⊕ 或\oplus。我想配置控制符号\+以使用它:

\documentclass{article}
\usepackage{amsmath}
\NewDocumentCommand{\+}{}{\ensuremath{\oplus}}

\begin{document}
    \section{Upright}
    a \+ b\\ 
    $ \text{a} \oplus \text{b} $
        
    \section{Italics}
    \textit{a} \+ \textit{b}\\
    $a \oplus b$
\end{document}

虽然这可行,但我仍然需要优化间距,以使其与数学模式下的间距匹配或相似: 在此处输入图片描述

我尝试了以下方法:

  • \mathsurround在定义中改变的值,即\NewDocumentCommand{\+}{}{\mathsurround=0pt\ensuremath{\oplus}}(我相信这已经是默认值)
  • \mathrel\oplus定义中使用。

这些方法都不起作用。我还有一个想法是\oplus直接访问符号,但 Unicode 符号无法链接到我使用的字体中的数学关系符号。还有其他方法吗?

答案1

你可以试试:

\def\+{\leavevmode\unskip\hbox{${}\oplus{}$}\ignorespaces}

这将忽略前后的空格\+并添加数学模式中的空格。

答案2

如果您想要数学模式排​​版,您真正想要的是切换到数学模式,但将参数排版为文本。 和 都\textup\texit数学模式下工作。 您也可以使用\mathrm\mathit

\documentclass{article}
\usepackage{amsmath}

\newcommand\plusify[2]{\( \text{#1} \oplus \text{#2} \)}

\begin{document}
    \section{Upright}
    \( \textup{a} \oplus \textup{b} \)
    \plusify{a}{b}
    \( \text{a} \oplus \text{b} \)
    \(\mathrm{a} \oplus \mathrm{b} \)
        
    \section{Italics}
    \( \textit{a} \oplus \textit{b} \)
    \plusify{\itshape a}{\itshape b}
    \( a \oplus b \)
    \( \mathit{a} \oplus \mathit{b} \)
\end{document}

计算机现代样本

相关内容