diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /usergrps/uktug/baskervi/8_1/ltx-logo.tex |
Initial commit
Diffstat (limited to 'usergrps/uktug/baskervi/8_1/ltx-logo.tex')
-rw-r--r-- | usergrps/uktug/baskervi/8_1/ltx-logo.tex | 324 |
1 files changed, 324 insertions, 0 deletions
diff --git a/usergrps/uktug/baskervi/8_1/ltx-logo.tex b/usergrps/uktug/baskervi/8_1/ltx-logo.tex new file mode 100644 index 0000000000..e2dc6beefe --- /dev/null +++ b/usergrps/uktug/baskervi/8_1/ltx-logo.tex @@ -0,0 +1,324 @@ +% +% define the standard logo (since we use the new logo throughout) +\makeatletter +\DeclareRobustCommand{\stdLaTeX}{L\kern-.36em + {% + \sbox\z@ T% + \vbox to\ht0{\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }% + \kern-.15em + \TeX} +% +\DeclareRobustCommand{\faqLaTeX}{L% + {% + \setbox0\hbox{T}% + \setbox\@tempboxa\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \@tempdima\ht0 + \advance\@tempdima-\ht\@tempboxa + \@tempdima\strip@pt\fontdimen1\font\@tempdima + \advance\@tempdima-.36em + \kern\@tempdima + \vbox to\ht0{\box\@tempboxa + \vss}% + }% + \kern-.15em + \TeX} +\makeatother +% +\title{Typesetting the \LaTeX{} Logo: a Saga} +\author{Robin Fairbairns} +\begin{Article} + When I was collating the first edition of the \uktug\ \acro{FAQ}, + one of the people I asked to review it was Barbara Beeton, and one + of her comments was that the \LaTeX{} logo looked awful, + specifically when typeset in \emph{Baskerville Italic}. + + Barbara's observation set me on a quest for a resilient macro to + typeset this curious object; I still haven't found any philosopher's + stone for this task, but I have at least got a formula that enables + one to codify some working parameters in a \LaTeX-like sort of + way\dots. + + Sebastian Rahtz, in one of his fulminating editorials, cried `a pox + on all these logos'. In retrospect one could wish that Lamport + hadn't taken us beyond Knuth's original \TeX{} logo (which seemed + amusing at first encounter), but while one can steadfastly ignore + most other logos, it seems difficult to ignore \LaTeX{} (whether + you're a convinced user or a virulent hater). I hope that the work + I describe here will make its own small contribution to the beauty + of descriptions, in \LaTeX{}, of \LaTeX{} itself~\dots or will, at + least, draw them back from the abyss of hideousness that the logo + itself seems inexorably to pull towards. + + \section{The Old \LaTeX\ coding} + + The last release of~2.09 (dating from March~1992), had: +\begin{verbatim} +\def\p@LaTeX{{\reset@font\rm L\kern-.36em% + \raise.3ex\hbox{\sc a}\kern-.15em% + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} +\def\LaTeX{\protect\p@LaTeX} +\end{verbatim} + Apart from the \cs{reset@font}, this is (in essence) Lamport's + original coding; the definition of \cs{p@LaTeX} provides the basis + for the robust command \cs{LaTeX} (Lamport's original was fragile). + + The output the macro produces is reasonable, \emph{if} you're using + \texttt{cmr} at a `reasonable' size: at \texttt{10pt}, we see + {\fontfamily{cmr}\fontencoding{OT1}\selectfont L\kern-.36em\raise.3ex\hbox{\sc a}% + \kern-.15emT\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}\@. It's + odd that its code includes that for (Knuth's) logo \cs{TeX} (rather + than referring to the older macro), and it's noteworthy that neither + it nor Knuth's code makes the spacefactor adjustment due at the end + of the word\footnote{This observation is due to Barbara Beeton.} (in + English typesetting, it's common practice to set the capitals in + acronyms and logos as if they were lower-case letters). + + The problems that arise from the macro are: + \begin{itemize} + \setlength{\itemsep}{0pt}% + \item that it steadfastly sets in the default font (\texttt{cmr}), + and + \item that its use of \cs{sc} restricts it to a smaller range of + sizes than one might hope. + \end{itemize} + These restrictions make it appear odd in section titles (which are + set in bold in \LaTeX's standard classes), and prevent (what seems + to me) entirely reasonable use in sans fonts, etc. However, since + it's now history, I shan't discuss it further. + + \section{The standard \LaTeX{} coding} + + I don't any longer have the sources, but as I recall at least some + of the pre-release versions of \LaTeXe{} had something similar to + the \LaTeX209{} version of the logo. This version, instead of using + the `old' font command \cs{sc} (which selects some `fixed' font, + rather than a font related to that which surrounds it), used the + \LaTeX{} command \cs{scshape}. (The same would also have been true + of pre-\LaTeXe{} versions of the \acro{NFSS} with their subversion + of the \LaTeX209{} font commands.) This had the unfortunate effect + that \LaTeX{} warned you about using \cs{LaTeX} in a section title, + since almost no font family defines a bold-series + Caps-and-Small-Caps font\dots. + + The appearance of the present \LaTeX{} logo was therefore a minor + relief for navel-contemplating\footnote{`Real' users, writing about + anything other than \LaTeX{} itself would never have noticed the + problem!} users such as myself. The new logo coding sets the `\acro{A}' + of \LaTeX{} in the scriptfont size related to the current text size, + and with its apex at the same level as the top of the `T'. This + logo actually looks slightly different from the one in \LaTeX209{}, + but is noticeably more stable: +\begin{verbatim} +\DeclareRobustCommand{\LaTeX}{L\kern-.36em + {% + \sbox\z@ T% + \vbox to\ht0{\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }% + \kern-.15em + \TeX} +\end{verbatim} + As you can see, the code sets `T' into a scratch \cs{hbox} which it + then uses as the height of a \cs{vbox} into the top of which the `\acro{A}' + is stuck. The size of the `\acro{A}' is selected in the curious sequence + involving an empty maths mode (with zero \cs{mathsurround}), the + setting-up of current maths sizes using \cs{S@}\meta{\cs{f@size}} + (as it were), and then using the \cs{sf@size} (which is the `current + script font size') thus defined. + + This version of the logo deals with some of the problems of the + \LaTeX209{} version, and pushes back the boundaries of difficulty into + new areas: + \begin{itemize} + \setlength{\itemsep}{0pt}% + \item very small font sizes, where the scriptfont size doesn't + differ much (or at all) from the textfont size, + \item font sizes for which no \cs{DeclareMathSizes} has been issued: + in this case, \LaTeX{} will calculate a value for the size of + \cs{scriptstyle} which ought to be appropriate, but which could + well not be available within the set of fonts \LaTeX{} is willing + to employ, + \item thoroughly peculiar uses (for example, the man who complained + on \Newsgroup|comp.text.tex| that the \textsf{textfit} package + produces odd effects, like: + {{\huge\global\edef\grumble{\the\font}}\grumble\stdLaTeX}, + which fails because the font is selected outside of the + \acro{NFSS}, and so the `\acro{A}' matches whatever size is + \acro{NFSS}-selected\Dash in this case 10pt\footnote{That example + was achieved by selecting \cs{huge} outside of the \acro{NFSS}: + the original complaint was about a 1~inch high logo, at which + size it's difficult to see that there's an `\acro{A}' there at all!}), + and + \item use in fonts that don't match the kerning parameters used. + \end{itemize} + It's the last problem that I've been attempting to address in my + investigations of the logo. + + \begin{figure*}[tp] + \begin{center} + \leavevmode + \includegraphics{logo-mbvx-m-n} + \caption{\LaTeX{} logo samples for Baskerville medium, normal} + \label{fig:bv-latex-sample} + \end{center} + \end{figure*} + \section{My first attempt} + + This code deals with the slant of an italic character, and has been + used in the published editions of the \acro{FAQ}. +\begin{verbatim} +\DeclareRobustCommand{\LaTeX}{L% + {% + \setbox0\hbox{T}% + \setbox\@tempboxa\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \@tempdima\ht0 + \advance\@tempdima-\ht\@tempboxa +\end{verbatim} + That sets up the amount by which the `\acro{A}' will be raised, + in \cs{@tempdima}; the next line of code extracts the font dimension + that gives the slant, and multiplies \cs{@tempdima} by it; this is + simple coordinate geometry, and gives an amount by which to adjust + the negative kern in the standard version of the logo. We then + calculate an actual value to use for the kern, and complete the + fractured coding of the standard logo. +\begin{verbatim} + \@tempdima + \strip@pt\fontdimen1\font\@tempdima + \advance\@tempdima-.36em + \kern\@tempdima + \vbox to\ht0{\box\@tempboxa + \vss}% + }% + \kern-.15em + \TeX} +\end{verbatim} + This code improves the appearance of inclined copies of the + logo\Dash inclined copies are absolutely dire if you're using + Baskerville fonts (as we do in \BV): compare \emph{\stdLaTeX} (the + standard logo) with \emph{\faqLaTeX} (the above code). + + \section{But the standard code doesn't even work with + \acro{CM}-family fonts!} + + Section titles in \tub{} are set in \texttt{cmssbx}\footnote{\tub{} + `sections' are collections of related papers within one issue; + sections within a \tub{} paper are like sections within any + \LaTeX{} document.}: the fragility of the logo is demonstrated by + the fact that the standard code fails with this font: + {\fontfamily{cmss}\fontencoding{OT1}\bfseries\selectfont\stdLaTeX}. When the first + `\LaTeX{} macros' section turned up since I joined the \tub{} + production team, Barbara Beeton asked me to `sort it out'. Since + this problem is occurring for an upright font, the trick I developed + for use in \BV{} doesn't help. + + I could have taken a hint from the documentation that's included in + the \LaTeX{} distribution, which defines a different logo for each + font family one might use to print it; however, I didn't notice + this, and developed a version that can in principle behave + differently for every value of font family, series and shape. + + The \cs{LaTeX} command itself is simple: it simply chooses a set of + pre-defined parameters (or, in default of that, selects the + parameters used in the standard logo), and then relays to a patched + version of the standard logo: +\begin{verbatim} +\DeclareRobustCommand\LaTeX{% + \expandafter\let\expandafter\@tempa + \csname @LaTeX@\f@family/\f@series/% + \f@shape\endcsname + \ifx\@tempa\relax\let\@tempa\@LaTeX@default\fi + \expandafter\@LaTeX\@tempa} +\end{verbatim} + The patched version of the standard logo is equally trivial: +\begin{verbatim} +\newcommand\@LaTeX[2]{L\kern-#1em + {% + \sbox\z@ T% + \vbox to\ht0{\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }% + \kern-#2em% + \TeX} +\end{verbatim} + The parameters are defined by the command +\begin{verbatim} +\newcommand\DeclareLaTeXLogo[5]{% + \expandafter\def + \csname @LaTeX@#1/#2/#3\endcsname + {{#4}{#5}}} +\end{verbatim} + whose parameters are font family, series and shape, and then the two + extra parameters to be used by \cs{@LaTeX}. The default setting is + simply: +\begin{verbatim} +\def\@LaTeX@default{{.36}{.15}} +\end{verbatim} + My \textsf{ltugboat} class defines three sets of \acro{CM}-family + parameters: +\begin{verbatim} +\DeclareLaTeXLogo{cmss}{bx}{n}{.3}{.15} +\DeclareLaTeXLogo{cmr}{m}{it}{.3}{.27} +\DeclareLaTeXLogo{cmr}{bx}{it}{.3}{.27} +\end{verbatim} + the first of which deals with the problem that Barbara Beeton had + highlighted. + + Finding sets of parameters to use isn't entirely trivial; I generate + a set of logos with different parameters for the font family, series + and shape under consideration, examine them, adjust the set of + parameters and iterate until I have something that looks + satisfactory. The last sample in this exercise for Baskerville + medium, normal, is shown in figure~\ref{fig:bv-latex-sample}. + + \section{Conclusion: future work} + + The macros I describe above are available on \acro{CTAN} in + directory \url{macros/latex/contrib/supported/ltx-logo} (together + with the source of this note, by way of justification). The + \texttt{ltx-logo} package takes font family names as package + options: for each option quoted, the package will define any logo + parameter sets it knows for that family: at the time of writing, the + package knows about the \texttt{cm} family (using the parameters + shown above for \url{cmss/bx/n}, \url{cmr/m/it} and \url{cmr/bx/it}) + and the Monotype Baskerville families \texttt{mbv} and \texttt{mbvx} + (the latter includes use of the so-called `expert' fonts: for the + purposes of the \LaTeX{} logo, the required parameters are the same + as for the non-expert set). + + I remarked above that the \LaTeX{} team had defined special-purpose + \LaTeX{} logos for a number of font families, in the macros used for + the documentation distributed with \LaTeX. Their approach (which + was developed independently of mine) isn't as general as mine, but I + was interested to note that they also redefine the \TeX{} logo: I + hadn't bothered with that, on the grounds that it seemed `mostly + \acro{OK}' in texts I had set. I suppose it offers an avenue for + still further enthralling developments in my study of \TeX-based + logos. + + The macros on \acro{CTAN} include the test code I used to evaluate + parameters for the fonts. People who feel moved to work out sets + for their own favourite font family are encouraged to submit them to + me for inclusion in the distribution\dots. +\end{Article} |