数学和文本模式下的尖括号

数学和文本模式下的尖括号

我在命令中\textlangle使用\textrangle

\newcommand{\qdist}[1]{\textlangle#1\textrangle}

它用于数学和文本模式。在数学模式下,我收到错误消息

LaTeX Warning: Command \textrangle invalid in math mode on input line 952.

在两种模式下可以使用什么类似的符号?我使用 Lualatex。

数学家

\documentclass[msmallroyalvopaper
    ]{memoir}

\newcommand{\qdist}[1]{\textlangle#1\textrangle}

\begin{document}

text with \qdist{word} 

and some math 
\[   a = \qdist{symbol} \]
The multiple applications of a GIS can be summarized in three prototypical situations:

more text 

\end{document}

答案1

您可以加入一个条件,在数学模式中\ifmmode使用\langle和,在文本模式中使用和。\rangle\textlangle\textrangle

在此处输入图片描述

此方法适用于 pdfLaTeX、LuaLaTeX 和 XeLaTeX。

\documentclass{memoir}
\usepackage{textcomp} % for \textlangle and \textrangle macros
\newcommand{\qdist}[1]{\ifmmode\langle#1\rangle\else\textlangle#1\textrangle\fi}
\begin{document}
\qdist{word}, $\qdist{symbol}$
\end{document}

附录-- 正如 @egreg 在评论和他单独的回答中指出的那样,使用\newcommand创建\qdist宏(如上所示)可能会遇到麻烦。有必要使用\DeclareRobustCommand而不是\newcommand

答案2

我猜你不希望参数的排版\qdist在数学或文本中改变字体,所以更简单的

\newcommand{\qdist}[1]{\text{\textlangle#1\textrangle}}

可能就足够了。另一方面,如果这出现在斜体上下文中,比如定理陈述中,效果就会不愉快:

\newcommand{\qdist}[1]{\textup{\textlangle#1\textrangle}}

看起来好多了。

如果您希望数学中的参数应该\qdist是一些数学符号,那么在我看来您应该使用两个不同的命令,因为情况不同并且命令的语义很重要。

如果你不想遵循建议,请使用

\DeclareRobustCommand{\qdist}[1]{%
  \ifmmode
    \langle#1\rangle
  \else
    \textup{\textlangle#1\textrangle}%
  \fi
}

这与 Mico 的建议在两个重要细节上有所不同:它在任何情况下都能正常工作(Mico 的建议不能),并且在任何斜体环境中都能保持输出直立。

相关内容