重新定义竖线: 如何正确排版负号?

重新定义竖线: 如何正确排版负号?

在我的文档中我必须排版几个带有坐标的点。

例子

\(P(-3|-2)\)

输出

enter image description here

正如你所见,LaTeX 将第二个符号处理为减号(二元运算符),而它是一个负号(一元运算符)。我知道一个解决方案是将第二个符号括在花括号中,例如\(P(-3|{-}2)\)(来源)。

我该如何重新定义垂直线以便 LaTeX 正确设置空格?

我不想通过添加花括号来手动更改它,因为我有数百个坐标需要更改(练习集)。据我所知,我必须在垂直线上添加\mathclose{}和(\mathopen{}来源)。

答案1

您可以这样做\(P(-3|{-2})\),但是这很容易出错。

最好为坐标定义一个宏,这样就不会被特定的符号所束缚。假设有人命令你使用分号来分隔坐标:你愿意浏览你的长文档并将该上下文中出现的所有条形图都改为分号吗?我不会。;-)

\documentclass{article}

\newcommand{\coord}[3]{%
  #1% the point's name
  (#2\mathclose{}\,\vert\,\mathopen{}#3)%
}

\begin{document}

A point \( \coord{P}{-3}{-2} \) (good)

A point \( P(-3|{-2}) \) (bad)

\end{document}

空的\mathopen和原子与\mathclose括号相匹配并有助于保持事物适当的分离。

您不必\,在 的两边都使用\vert,但我认为这样更好。无论如何,只需更改 的定义\coord即可解决上述棘手的情况。

enter image description here

您仍然可以使用类似于输出的输入样式,借助xparse

\documentclass{article}
\usepackage{xparse}

\NewDocumentCommand{\coord}{ u( u| u) }{%
  \IfValueT{#1}{#1}% the point's name (optional)
  (#2\mathclose{}\,\vert\,\mathopen{}#3)%
}

\begin{document}

A point \( \coord P(-3|-2) \)

A point \( \coord(-3|-2) \)

\end{document}

enter image description here

相关内容