As the author of siunitx
I have some idea about the relative strengths of the various alternatives. There are various things that need to be done for units:
- Semantic input of units, so
\kilo\metre
rather than km
: this allows special effects such as reformatting fractions 'on the go' (some people prefer to use literal input, and this ideally needs to be supported too).
- Formatting of numbers, for example dividing up digits into groups.
- Correctly presenting awkward symbols such as the micro symbol.
- Setting the font: many guidelines call for units to be in upright roman font with no bold or italic variation.
- Keeping numbers and units together (no space breaking)
Many packages have been written to address one or other aspect of this question. For example, SIunits
is good at providing semantic input, whereas SIstyle
focusses on correct typesetting but leaves the input to the user. On the other hand, unitsdef
sticks to doing only units and does not worry about other aspects.
The aim of the siunitx
package is to cover all of the requirements above, and to provide a way that package behaviour can be altered. Thus it uses a series of key-value options that will change how the output is formatted. The options can be applied to the entire document or to an individual piece of input. It also is designed to work in either math or text mode equally well. I have also been very careful to provide up to date advice about the internationally-agreed units in the documentation of siunitx
.
As a demo, using the latest release of siunitx
the following all show off the package:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{itemize}
\item \qty{100}{\degreeCelsius}
\item \qty{3e5}{\km\per\s} or \qty[per-mode = symbol]{3e5}{\km\per\s}
\item \unit{\newton\metre\squared\per\kilogram\squared} or
\unit[per-mode = symbol]{\newton\metre\squared\per\kilogram\squared}
\item \( \qty{10}{\kilo\hertz} = \qty{1}{\per\second\tothe{4}} \)
\item \qty[parse-numbers = false]{\sin(x)}{\metre}
\end{itemize}
\end{document}
There are a couple of notes to bear in mind if using siunitx
. First, it requires e-TeX, which can be an issue with some publishers (even over 10 years after it was finalised!). Secondly, the formatting does take up some time. There are settings to turn things off but it's always the case that working by hand will ultimately be faster. However, the upside of clearer and more flexible input is in my opinion worth it.
One other point is that siunitx
is under development, with bug fixes and new features (there is a list for v3.1). In contrast, both SIunits
and SIstyle
are depreciated: bug fixes only. The units
and unitsdef
packages have not been updated for many years.
Without seeing all of the actual specifications, it's hard to tell exactly how much of this is very difficult to do in LaTeX or very easy. However, I would think that most can be done without too much trouble.
I would recommend looking into the memoir
document class. It has extensive capabilities for customising almost anything you would need in a document, and has very good facilities for setting verse. It also has extensive facilities for putting text into margins. The documentaion is also extremely complete and can serve as a guide to document formatting generally.
Either you can use the class directly or you can build your own custom class using memoir as a base. I would start by producing a mockup of the document formatting using the memoir class, and then work to turn that into a custom class file by adding semantic markup macros for the various kinds of logical parts of the documents.
You can easily insert your TIFF images directly using the graphicx
package, although if you have a way to recreate the images in a scalable format such as PDF that would be better.
As you know, LilyPondcan integrate well with LaTeX, so as you move to turning more of your music into LilyPond the integration will become cleaner.
With respect to automation, you don't need to learn TeX to do automation: you can automate things with LaTeX just as easily. There are also a number of packages for dealing with external data sources: datatool
for importing spreadsheet type data, and latexdb
for interface with an SQL database.
On a related note, but not necessarily directly useful, is the songs
package, which can produce songbooks. This might give you some code to use for some aspects of the formatting.
Having said all of this, I would urge you also to think of how long you are going to be around to keep this all going. Once you leave, it's not going to be easy to get someone else to carry on with the fruits of all your labour.
Best Answer
A font that gives nice (in my extremely humble opinion, the nicest)
\mathscr{}
is given by the mathrsfs package. There are many others...