我想在 LaTeX 中创建一个可以像这样使用的命令:
\zoneaxis{1 2 -3}
\zoneaxis{2 -1 -1 10}
并会产生如下结果:
$[1\,2\,\overline{3}]$
$[2\,\overline{1}\,\overline{1}\,10]$
也就是说,将三到四个数字放在括号中,将减号设为上划线,数字之间留有小空格。
看起来我必须进行逐个字符的解析,但我不知道在哪里寻找如何做到这一点。
类似的东西已经存在了吗?如果没有,我在哪里可以找到如何做到这一点?
答案1
这磨坊主包可能就是您要找的。使排版米勒指数变得非常容易。
答案2
我建议使用 xstring,这使得解析更容易:
\documentclass{minimal}
\usepackage{xstring}
\makeatletter
\newcommand\zoneaxis[1]{%
\begingroup
\expandarg
\def\remain@arg{#1 }%
\ensuremath{[\zoneaxis@]}%
\endgroup}
\newcommand\zoneaxis@{%
\StrBefore\remain@arg\space[\current@arg]%
\StrBehind\remain@arg\space[\remain@arg]%
\IfBeginWith\current@arg-%
{\overline{\expandafter\@gobble\current@arg}}%
\current@arg
\ifx\@empty\remain@arg\else
\thinspace\expandafter\zoneaxis@
\fi}
\makeatother
\begin{document}
$[2\,\overline{1}\,\overline{1}\,10]$
\zoneaxis{2 -1 -1 10}
\end{document}