我怎样才能改变数学符号的类别?(具体来说,从 mathrel 到 mathbin)

我怎样才能改变数学符号的类别?(具体来说,从 mathrel 到 mathbin)

当我在数学环境中使用冒号时,我发现我需要的间距是二元运算符的间距(而不是 a 的间距mathrel),例如,射影空间中的直线 $ax+by+ct=0$ 具有齐次坐标 $(a \mathbin{:}b \mathbin{:}c)$ 而不是 $(a : b : c)$(类似地,$10 \mathbin{:}2=5$ 而不是 $10 \mathrel{:}2=5$。)
到目前为止,我已经在文档的序言中使用以下代码进行了管理: \mathcode`:="203A 我认为它将 的类:从更改mathrelmathbin但我不确定这是否是实现这一点的正确方法。我:通过反复试验找到了符号所在的位置,所以我甚至不确定如果我需要更改不同符号的类,在类似情况下应该怎么做。我理解(也许我错了)中的第一个数字"203A定义了数学符号的类,例如2定义 amathbin3定义 a mathrel(这是冒号的默认类)。

我想要一些语义上更明显的东西,例如:

\DeclareMathSymbol{:}{\mathbin{:}}

这是我的最小代码

\documentclass{article}
\usepackage{amsmath}
%\mathcode`:="203A
\begin{document}
    I could write the homogeneous coordinates of a point  as $(a:b:c:d)$ or $(a\mathord{:}b\mathord{:}c\mathord{:}d)$ or, even worse, $a\mathpunct{:}b\mathpunct{:}c\mathpunct{:}d$, but I'd rather go for $(a\mathbin{:}b\mathbin{:}c\mathbin{:}d)$.
    \begin{align*}
        \texttt{mathrel}\quad & (a\mathrel{:}b\mathrel{:}c)\\
        \texttt{mathord}\quad & (a{:}b{:}c)\\
        \texttt{mathbin}\quad & (a\mathbin{:}b\mathbin{:}c)\\
        \texttt{mathrel}\quad & (a:b:c)
    \end{align*}
Until now I've achieved this with the command \verb*|\mathcode`:="203A| so when I type \verb*|$(a:b:c:d)$| I get $(a\mathbin{:}b\mathbin{:}c\mathbin{:}d)$, that's all.
\end{document}

答案1

你可以\showthe\mathcode`:,但是这会输出十进制12346。如何获取里面LaTeX 的转化?

嗯,你需要知道关系符号的类是 3,而运算符号的类是 2。

如果你知道冒号是一个关系符号,你只想减去"1000(十六进制):

\mathcode`:=\inteval{\mathcode`:-"1000}

例子

\documentclass{article}
\usepackage{amsmath}

\begin{document}

$(a:b:c)$

\mathcode`:=\inteval{\mathcode`:-"1000}

$(a:b:c)$

\end{document}

在此处输入图片描述

当然,你会在序言中重新定义。

\documentclass{article}
\usepackage{amsmath}

\AtBeginDocument{%
  \mathcode`:=\inteval{\mathcode`:-"1000}%
}

\begin{document}

$(a:b:c)$

\end{document}

在此处输入图片描述

另一方面,我的建议是不是这样做是因为冒号周围的空间会参与线条的拉伸/收缩。

\documentclass{article}
\usepackage{amsmath}

\ExplSyntaxOn

\NewDocumentCommand{\pc}{m}% projective coordinates
 {
  \seq_set_split:NVn \l_tmpa_seq \c_colon_str { #1 }
  ( \seq_use:Nn \l_tmpa_seq { \mspace{1\medmuskip}{:}\mspace{1\medmuskip} } )
 }

\ExplSyntaxOff

\begin{document}

$\pc{a:b:c}$

\end{document}

相关内容