在 siunitx 中定义 \ang

在 siunitx 中定义 \ang

我的问题:我发现siunitx需要 Latex3 支持。不幸的是,我没有此支持(就使用非管理员服务器上的 latex 而言)。siunitx.sty在我想使用之前,较旧版本的 (2009/03/29 v2.0alpha) 对我来说是可行的\ang。因此

因此

我的问题:我需要什么明确的宏才能拥有\ang并继续使用旧版本siunitx

答案1

您需要直接使用单位\degree\arcminute\arcsecond

这是一个简单的解析器,其作用类似于当前的\ang宏。

代码

\documentclass{article}
\usepackage{siunitx}
\listfiles
\makeatletter
\def\ang{\kernel@ifnextchar[\ang@{\ang@[]}}
\def\ang@[#1]#2{\def\@tempb{[{#1}]}\@ang#2;;;\@nil}
\def\@ang#1;#2;#3;#4\@nil{%
  \@tempswatrue
  \@@ang{#1}{\degree}%
  \@@ang{#2}{\arcminute}%
  \@@ang{#3}{\arcsecond}%
}
\def\@@ang#1#2{%
  \edef\@tempa{#1}%
  \ifx\@tempa\@empty
   \if@tempswa
    \expandafter\SI\@tempb{0}{#2}%
   \fi
  \else
    \expandafter\SI\@tempb{#1}{#2}%
    \@tempswafalse
  \fi
}
\makeatother
\begin{document}
\ang{0.1} \quad \ang{1;2} \quad \ang{2;30;59}

\ang{;0.2} \quad \ang[symbols/math/degree=^?]{;;3} % just for fun, don't use this!
\end{document}

 *File List*
 article.cls    2007/10/19 v1.4h Standard LaTeX document class
  size10.clo    2007/10/19 v1.4h Standard LaTeX file (size option)
 siunitx.sty    2009/03/29 v2.0alpha A comprehensive (SI) units package
 amstext.sty    2000/06/29 v2.01
  amsgen.sty    1999/11/30 v2.0
   array.sty    2008/09/09 v2.4c Tabular extension package (FMi)
    etex.sty    1998/03/26 v2.0 eTeX basic definition package (PEB)
 pgfkeys.sty    
 pgfkeys.code.tex
  ts1cmr.fd    1999/05/25 v2.5h Standard LaTeX font definitions

输出

在此处输入图片描述

相关内容