10

The siunitx package has a special macro for setting angles in degrees called like \ang{42}, which renders as 42°, i.e. sets no space between the number and the unit as recommended and in contrast to the normal \unit, which inserts a thin space. Unfortunately the \ang macro has no optional argument adding additional units (as in \ang{42}[\per\second]), which leads to the following question:

Having an angular velocity in degree (unit: degree per seconds; I do not want to use rad/s here), what is the recommended way to have a nice (correct) output and what is the recommended way with siunitx?

I have two suggestions:

First

\SI{42}{\degree\per\second}

resulting in and second

\num{42}\si{\degree\per\second}

which looks like enter image description here. Both look unfamiliar, but the output of the latter might look a bit more familiar than the first one, altough the code of the former is nicer than that of the second one.

Does anyone know what is officially correct?

  • 1
    The degree is a "Non-SI unit accepted for use with the International System of Units" (The International System of Units, tab 6), so you're officially allowed to use it. There are no examples of the use of the degree symbol with other units in that brochure, but there are books (particularly in astronomy) that use it: No space between quantity and symbol: books.google.com/books?id=BAihdjtLZXcC&lpg=PA132, eq. 4.7; thin space between quantity and symbol: books.google.ca/books?id=UC_1_804BXgC&lpg=PA60, eq. 5.12. You choose – Jake May 27 '13 at 20:35
  • 1
    @Jake Thanks for the clarification and the links. Interestingly both versions are different than my two suggestions, as they are different between the degree symbol and the following unit. The first source (eq. 4.8) does not seem to have a space between ° and the following unit, whereas the second source uses a lower dot between both. – Patrick Häcker May 27 '13 at 20:49
  • 2
    Looking at the SI brochure again, it states quite explicitly that "for the unit symbols for degree, minute, and second for plane angle, (...) no space is left between the numerical value and the unit symbol" (section 5.3.3), so I would say that your second suggestion is more correct. You can type that a little more elegantly using \SI[number-unit-product={}]{24}{\degree\per\s}. – Jake May 27 '13 at 21:03
  • @Jake Thanks again, this is very welcome. Can you collect your comments into an answer? I will not accept it immediately, but this is already a valuable answer. – Patrick Häcker May 27 '13 at 21:05
  • 2
    Glad it helps already, but experience shows that Joseph Wright will probably come up with a definitive answer once he sees this. – Jake May 27 '13 at 21:08
4

One possibility to keep being flexible would be to redefine \ang with an xparse argument signature like the following {omo} to add the optional unit in the third argument. This macro then could easily be redefined.

Unfortunately this would either include a call to \SI and thus loosing the possibilities of anglular minutes and angular seconds of the original \ang macro or include a call to the old \ang macro. The latter is to my knowledge not possible without code duplication, as neither the \let nor the \LetLtxMacro commands can cope with macros defined by xparse (which is the case for \ang defined in siunitx).

As a workaround it is possible to use the following definition until there is a better solution:

\NewDocumentCommand{\angsi}{omom}{%
    \ang[#1]{#2}\si[#3]{#4}%
}

Then it is possible to write

\angsi{42}{\per\second}

or

\angsi{1;2;3}{\per\second}

and add spacing as \, to the macro definition later, if that should be needed.

Update:

I contacted Joseph Wright (siunitx package author) and he proposes

<num>°\,s^{-1}

according to the NIST standard:

There is a space between the numerical value and unit symbol, even
when the value is used in an adjectival sense, except in the case
of superscript units for plane angle.

So that's the way to go, which can be achieved by

\NewDocumentCommand{\angsi}{omom}{%
    \ang[#1]{#2}\,\si[#3]{#4}%
}
2

First, load the siunits package:

\usepackage[Gray,squaren,thinqspace,thinspace]{SIunits}

Then this command:

\degree\per\second

in math mode, will give you:

°/s
  • Welcome to TeX.SX! This is no answer as the question asks about siunitx. – TeXnician Nov 30 '17 at 5:28
  • 1
    @TeXnician If the answer is: "Use siunits instead of siunitx" it is an answer. Whether or not this is a good answer is not another point (and could be declared by up and down votes). – Schweinebacke Nov 30 '17 at 7:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.