齐次坐标的间距

齐次坐标的间距

射影几何中的齐次坐标通常表示如下:$[x:y:z]$。不过,我认为:起到了逗号的作用,并且 周围的空格应比 的其他用法小得多:

LaTeX 中是否有一种简单的方法可以自动调整齐次坐标中的间距,而不会干扰其他用途的间距:

答案1

将其设置为{:}或使用\mathpunct{:}

\documentclass{article}
\usepackage[french]{babel}
\makeatletter
\def\Coor#1{\begingroup\mathcode`\:="603A[\Coor@i#1::\@nil}
\def\Coor@i#1:#2:#3\@nil{%
  #1\ifx\relax#2\relax ]\else\mathpunct{:}\Coor@i#2:#3\@nil\fi\endgroup}
\makeatother

\begin{document}

$\Coor{1}$
foo $\Coor{1:2}$ bar $\Coor{1:2:3}$ baz $[1:2:3]$

\end{document} 

答案2

我认为最好将其视为:二元运算符(其后没有断点)。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel} % just for testing

\newcommand{\pcoor}[1]{%
  \begingroup\lccode`~=`: \lowercase{\endgroup
  \edef~}{\mathbin{\mathchar\the\mathcode`:}\nobreak}%
  [% opening symbol
  \begingroup
  \mathcode`:=\string"8000
  #1%
  \endgroup 
  ]% closing symbol
}

\begin{document}

Coordonnées projectives sur la ligne: $\pcoor{a:b}$

Coordonnées projectives sur le plan: $\pcoor{a:b:c}$

Coordonnées projectives sur l'espace: $\pcoor{a:b:c:d}$

\end{document}

在此处输入图片描述

与之相同\mathpunct,只需将\edef行改为

  \edef~}{\mathpunct{\mathchar\the\mathcode`:}}%

在此处输入图片描述

\mathbin不加载的版本,babel-french只是为了看到它独立于它(问题是该french选项变成:了简写)。

\documentclass{article}

\newcommand{\pcoor}[1]{%
  \begingroup\lccode`~=`: \lowercase{\endgroup
  \edef~}{\mathbin{\mathchar\the\mathcode`:}\nobreak}%
  [% opening symbol
  \begingroup
  \mathcode`:=\string"8000
  #1%
  \endgroup
  ]% closing symbol
}

\begin{document}

Projective coordinates on the line: $\pcoor{a:b}$

Projective coordinates on the plane: $\pcoor{a:b:c}$

Projective coordinates on the space: $\pcoor{a:b:c:d}$

\end{document}

在此处输入图片描述

相关内容