我希望在文本模式下能够轻松访问常用的关系符号,就像在数学模式下可以轻松访问它们一样。一个重要的例子是 ⊕ 或\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}