射影几何中的齐次坐标通常表示如下:$[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}