交换 `\colon` 和 `:`

交换 `\colon` 和 `:`

我知道在数学模式下使用:和之间存在印刷差异,因为被视为关系。但是,我使用 的频率远高于,所以我想互换两者。这可能吗?\colon:\colon:

答案1

\colon并使用:以下方式定义fontmath.ltx

\DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A}
\DeclareMathSymbol{:}{\mathrel}{operators}{"3A}

正如您自己所说,它构成了\colon一个标点符号和:关系符号。

您可以交换定义:

\DeclareMathSymbol{:}{\mathpunct}{operators}{"3A}
\DeclareMathSymbol{\colon}{\mathrel}{operators}{"3A}

正如 egreg 所指出的,amsmath对 有不同的定义\colon,它不依赖于 TeX 的原始数学间距。要将:和的定义\colon与交换amsmath,您需要创建:一个数学活动字符(我使用 egreg 的\DeclareMathActive) 和联合国\colon-使用之前定义\DeclareMathSymbol

\usepackage{amsmath}
% From https://tex.stackexchange.com/a/299805/134574
\newcommand{\DeclareMathActive}[2]{%
  \expandafter\edef\csname keep@#1@code\endcsname{\mathchar\the\mathcode`#1 }
  \begingroup\lccode`~=`#1\relax
  \lowercase{\endgroup\def~}{#2}%
  \AtBeginDocument{\mathcode`#1="8000 }}
\newcommand{\std}[1]{\csname keep@#1@code\endcsname}
% amsmath's definition of \colon:
\DeclareMathActive{:}{\nobreak\mskip2mu\mathpunct{}\nonscript
  \mkern-\thinmuskip{\std{:}}\mskip6muplus1mu\relax}
% undefine then redefine \colon:
\let\colon\UndefineD
\DeclareMathSymbol{\colon}{\mathrel}{operators}{"3A}

相关内容