diff options
author | Karl Berry <karl@freefriends.org> | 2020-01-10 21:42:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-01-10 21:42:03 +0000 |
commit | 2e6956a9eea8269ca8f5660ae80a8ce408c7b47d (patch) | |
tree | d1ed8410a3069bbba9347ff397c5705af2f02c20 /Master | |
parent | a93ee1456c70aac1fa5d0f2955af4c80a346c4a3 (diff) |
ulem (10jan20)
git-svn-id: svn://tug.org/texlive/trunk@53365 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/generic/ulem/README | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/ulem/ulem.ltx | 34 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/ulem/ulem.pdf | bin | 105944 -> 160373 bytes | |||
-rw-r--r-- | Master/texmf-dist/tex/generic/ulem/ulem.sty | 286 |
4 files changed, 83 insertions, 239 deletions
diff --git a/Master/texmf-dist/doc/generic/ulem/README b/Master/texmf-dist/doc/generic/ulem/README index 22dd59adcaf..a2fbf260287 100644 --- a/Master/texmf-dist/doc/generic/ulem/README +++ b/Master/texmf-dist/doc/generic/ulem/README @@ -5,7 +5,7 @@ A declaration of \normalem (or the \usepackage option "normalem") restores the normal \em and \emph behavior. - Copyright 1989-2011 by Donald Arseneau (Vancouver, Canada; asnd@triumf.ca) + Copyright 1989-2019 by Donald Arseneau (Vancouver, Canada; asnd@triumf.ca) This software may be freely transmitted, reproduced, or modified for any purpose provided that this copyright notice is left intact. diff --git a/Master/texmf-dist/doc/generic/ulem/ulem.ltx b/Master/texmf-dist/doc/generic/ulem/ulem.ltx index 2979659c300..4d46a2f9e99 100644 --- a/Master/texmf-dist/doc/generic/ulem/ulem.ltx +++ b/Master/texmf-dist/doc/generic/ulem/ulem.ltx @@ -2,9 +2,9 @@ % ulem.ltx Manual for ulem.sty % % -% Copyright (c) 1989-2011 by Donald Arseneau +% Copyright (c) 1989-2019 by Donald Arseneau % -% Version date 2011/03/18 +% Version date 2019/11/18 % \documentclass[12pt]{ltxdoc} \addtolength{\textwidth}{1cm} @@ -15,7 +15,7 @@ \hyphenation{normalem uwforbf ulforem} \title{The ulem package:\\ underlining for emphasis} \author{Donald Arseneau\\ asnd@triumf.ca} -\date{2011/03/18} +\date{2019/11/18} \begin{document} \maketitle @@ -46,7 +46,7 @@ \begin{footnotesize} -\noindent The ulem package is Copyright \copyright\ 1989--2011 by +\noindent The ulem package is Copyright \copyright\ 1989--2019 by Donald Arseneau (Vancouver, Canada).\\ The package (ulem.sty) and this documentation (ulem.ltx, ulem.pdf) may be freely transmitted, reproduced, or modified for any purpose provided that the @@ -104,9 +104,8 @@ Alternative package: soul. You can define your own styles of overprinting or underlining by using the \cs{markoverwith} command in the definition of your new command. -The definition should be something like:\\[3pt] -\indent - \cs{newcommand}\cs{cmd}|{|\cs{bgroup} \cs{markoverwith}|{|\meta{something}|}|\cs{ULon}|}|\\[3pt] +The definition should be something like:\\[6pt] + \cs{newcommand}\cs{cmd}|{|\cs{bgroup} \meta{settings}\cs{markoverwith}|{|\meta{something}|}|\cs{ULon}|}|\\[8pt] The `\meta{something}' can be as simple as a single character, or as complex as you can keep track of; it will likely contain some repositioning commands, perhaps \cs{raisebox}. @@ -127,26 +126,27 @@ Any type of underlining can be substituted for any font-selection command by issuing a proper \cs{useunder} declaration:\\[3pt] \cs{useunder}|{|\meta{underlinecommand}|}{|\meta{fontdeclaration}|}{|\meta{fontcommand}|}|\\[3pt] e.g., |\useunder{\uuline}{\bfseries}{\textbf}| gives a double underline -instead of bold face in \LaTeX. +instead of bold face in \LaTeX\ (but note the problem explained next). The commands \cs{normalem} and \cs{ULforem} respectively disable and enable underlining for \cs{em}/\cs{emph}, and so do the \cs{usepackage} options [normalem] and [ULforem]. There is also the \cs{usepackage} -option [UWforbf] to replace boldface with a wavey underline. These features -use the \cs{useunder} command internally. UWforbf does handle bold in -math mode, in a limited way, but it doesn't work in section titles, -unfortunately, because the titles are not delimited by explicit braces when -printed by the \cs{section} command. Currently under UWforbf the \cs{bfseries} +option [UWforbf] to replace boldface from \cs{textbf} with a wavey underline. +These features use the \cs{useunder} command internally. +UWforbf specifically employs +\cs{useunder}|{|\cs{uwave}|}|\allowbreak|{|\cs{bf}|}|\allowbreak|{|\cs{textbf}|}|, +so the \cs{bfseries} command still produces bold face, but \cs{bf} makes an -under-wave\footnote{%% no verbatim in footnotes +under-wave (if \cs{bf} is defined at all). That is +because section title formatting typically uses \cs{bfseries} not delimited by +braces, which would give errors for \cs{uwave}.\footnote{%% no verbatim in footnotes To get under-waved section titles (in ordinary \LaTeX\ classes) you could define:\\ \texttt{\string\renewcommand\string\@seccntformat[1]\string{\string\uwave \string{\string\csname\ the\#1\string\endcsname\string}\string\hskip 1em\string}}\\ and later specify \texttt{\string\section[...]\string{\string\uwave\string{...\string}\string}}. But you don't want to enter that swamp.} -(if |\bf| is defined at all). -In plain \TeX\ there is |\bf| but no \cs{textbf} so you could say |\useunder{\UWave}{\bf}{}|. +In plain \TeX\ there is \cs{bf} but no \cs{textbf} so you could say |\useunder{\uwave}{\bf}{}|. Some commands, such as |\\| and \cs{hskip} are given special treatment to work within uline, but others are not. Support for others can sometimes @@ -157,7 +157,7 @@ versions of commands should be modelled on |\UL@hskip| or |\UL@cr|, and should include the test `|\ifx\ \LA@space|'. For example, support for \cs{marginpar} is added through the hook mechanism. -All the underlining commands are robust (self-protecting) in \LaTeX. +All the underlining commands are robust in \LaTeX. \section{Complications} diff --git a/Master/texmf-dist/doc/generic/ulem/ulem.pdf b/Master/texmf-dist/doc/generic/ulem/ulem.pdf Binary files differindex e478d6ed5a7..f0943c75769 100644 --- a/Master/texmf-dist/doc/generic/ulem/ulem.pdf +++ b/Master/texmf-dist/doc/generic/ulem/ulem.pdf diff --git a/Master/texmf-dist/tex/generic/ulem/ulem.sty b/Master/texmf-dist/tex/generic/ulem/ulem.sty index bdad13b20cb..85ebb066425 100644 --- a/Master/texmf-dist/tex/generic/ulem/ulem.sty +++ b/Master/texmf-dist/tex/generic/ulem/ulem.sty @@ -1,5 +1,5 @@ % -% U L E M . S T Y [2012-05-18] +% U L E M . S T Y [2019-11-18] % % The ulem package provides various types of underlining that can stretch % between words and be broken across lines in LaTeX or plain TeX. @@ -21,7 +21,7 @@ % % {\em phasized\/} | In LaTeX, by default, these are underlined; use % \emph{asized} | \normalem or [normalem] to restore italics -% \useunder{\uwave}{\bfseries}{\textbf} +% \useunder{\uwave}{\bf}{\textbf} % use wavy underline in place of bold face % Use \markoverwith for defining new types of underlining. % @@ -40,20 +40,23 @@ \chardef\ULthickness\catcode\string`\@ % hold catcode temporarily \catcode\string`\@=11 -\def\uline{\relax \ifmmode\expandafter\underline +% \UL@protected = \protected, if available, else \relax + +\begingroup +\global\expandafter\let\expandafter\UL@protected\csname protected\endcsname +\endgroup + +\UL@protected\def\uline{\relax \ifmmode\expandafter\underline \else \bgroup\expandafter\ULset\fi} \newbox\UL@box \newbox\UL@hyphenbox \newskip\UL@skip \newtoks\UL@hook - -\newdimen\UL@height - +\newdimen\UL@height \UL@height=\maxdimen % flags being unused \newcount\UL@pe -\let\LA@space\ \let\LA@hskip\hskip -\def\UL@end *{\relax\relax}% something harmless unlikely to be found elsewhere +\UL@protected\def\UL@end *{\relax\relax}% something harmless but unique % For regular underlines, set the depth based on the font, or retain % the preset value, then start underlining. @@ -74,7 +77,7 @@ \def\ULon{\ifmmode \expandafter\UL@onmath\else \expandafter\UL@on\fi} % \UL@on sets the engine of underline running, and tells it -% where to stop. +% where to stop. #1 = the relevant text. \long\def\UL@on#1{\leavevmode\UL@ender \let\UL@on\UL@onin \everymath{\UL@hrest}\everyvbox{\UL@hrest}\let\hskip\UL@hskip \let\\\UL@cr \let\-\UL@dischyp \let\newline\UL@newline \let\ \UL@space @@ -84,9 +87,11 @@ \UL@word\@empty#1\xdef\UL@spfactor{\the\spacefactor} \UL@end * } % This is what \ULon does when it appears nested in an inner place. -\def\UL@onin#1{\leavevmode\UL@ender % when nested, do multiple underlining - \UL@height\ULthickness \advance\ULdepth\thr@@\UL@height - \advance\UL@height-\ULdepth \setbox\UL@box\hbox{{#1}}% +\long\def\UL@onin#1{\leavevmode\UL@ender % when nested, do multiple underlining + \ifdim\ULdepth=\maxdimen\else + \UL@height\ULthickness \advance\ULdepth\thr@@\UL@height \advance\UL@height-\ULdepth + \fi + \setbox\UL@box\hbox{{#1}}% \let\UL@start\relax\UL@putbox\egroup} % \UL@putbox is disabled in inner mode, so re-enable it by changing \UL@start % \UL@hrest is implicit due to \everyhbox. Double braces for \hbox are in @@ -103,7 +108,7 @@ % must expand to nothing outside the ifs for syntactical spaces to work. % the \expandafters get rid of the \@empty inserted at the beg. of word -\def\UL@word#1 {\expandafter\UL@start#1 % +\long\def\UL@word#1 {\expandafter\UL@start#1 % \expandafter\ifx\expandafter\UL@end#1\egroup\egroup \unskip \unskip \unskip % remove extra leader at end \spacefactor\UL@spfactor \let\UL@word\egroup @@ -134,9 +139,10 @@ % behaves properly. \def\UL@putbox{\ifx\UL@start\@empty \else % not inner - \vrule\@width\z@ \LA@penalty\@M - {\UL@skip\wd\UL@box \UL@leaders \kern-\UL@skip}% - \box\UL@box \fi} + \vrule\@width\z@ \LA@penalty\@M + {\UL@skip\wd\UL@box \UL@leaders \kern-\UL@skip}% + \box\UL@box + \fi} % With interword leaders, give some overlap to avoid gaps caused by % round-off errors in the printing program. Needs \unskip \unskip \unskip @@ -152,7 +158,8 @@ % restore some things for inside math or \mbox \def\UL@hrest{\let\ \LA@space \let\-\@empty \let\penalty\LA@penalty} -\def\UL@space{\LA@space \global\UL@skip\lastskip \unskip \UL@reskip}% \ +\let\LA@space\ % +\UL@protected\def\UL@space{\LA@space \global\UL@skip\lastskip \unskip \UL@reskip}% % Hyphenation is done by explicit \discretionary. The overlapping melds % with the running overlap because it *is* part of the running overlap: @@ -160,14 +167,14 @@ % then overlapped by leaders. The discretionary may occupy this space % if a break occurs; otherwise the next syllable gets doubly-overlapped % (in registration) for a distance of the hyphen's width. -\def\UL@dischyp{\global\setbox\UL@hyphenbox\hbox +\UL@protected\def\UL@dischyp{\global\setbox\UL@hyphenbox\hbox {\ifnum \hyphenchar\font<\z@ \string-\else \char\hyphenchar\font \fi}% \kern\wd\UL@hyphenbox \LA@penalty\@M \UL@stop \kern-\wd\UL@hyphenbox \discretionary{\box\UL@hyphenbox}{}{}\UL@start} \let\LA@penalty\penalty -\def\UL@penalty{\relax\ifhmode \afterassignment\UL@@penalty\count@ +\UL@protected\def\UL@penalty{\relax\ifhmode \afterassignment\UL@@penalty\count@ \else\LA@penalty\fi} \def\UL@@penalty{\LA@penalty \ifnum\count@=\z@ \@ne \else \count@ \fi % zero penalty => no penalty, so use 1 instead. @@ -181,7 +188,8 @@ % when they're used, but saves processing in \UL@hrest called by \everymath % \everyvbox and \everyhbox. -\def\UL@hskip{\ifx\ \LA@space \LA@hskip \else +\let\LA@hskip\hskip +\UL@protected\def\UL@hskip{\ifx\ \LA@space \LA@hskip \else \afterassignment\UL@reskip \global\UL@skip \fi} \def\UL@reskip{\UL@stop \UL@leaders \UL@start} @@ -190,13 +198,13 @@ % and so the \hfil is not underlined! \\ and \newline do nothing if inside % inner braces. -\def\UL@cr{\unskip \ifx\ \LA@space \let\UL@vad\@gobble +\UL@protected\def\UL@cr{\unskip \ifx\ \LA@space \let\UL@vad\@gobble \else \UL@stop \unskip\unskip\unskip \let\UL@vad\vadjust \fi \@ifstar{\UL@vad{\LA@penalty\@M}\UL@cra}\UL@cra} \def\UL@cra{\@ifnextchar[\UL@crb\UL@newline} \def\UL@crb[#1]{\UL@vad{\vskip#1}\UL@newline} -\def\UL@newline{\ifx\UL@start\@empty % (\UL@cr may have \UL@stop-ed already) +\UL@protected\def\UL@newline{\ifx\UL@start\@empty % (\UL@cr may have \UL@stop-ed already) \unskip \ifx\ \LA@space \else \UL@stop \unskip\unskip\unskip \fi\fi \LA@hskip \z@\@plus.0001fil\LA@penalty -\@M \UL@start} @@ -213,7 +221,8 @@ \newbox\ULC@box \let\ULleaders\leaders -\def\markoverwith#1{\setbox\ULC@box\hbox{{#1}}\UL@pixel.5\wd\ULC@box +\UL@protected\def\markoverwith#1{\leavevmode + \setbox\ULC@box\hbox{{#1}}\UL@pixel.5\wd\ULC@box \ifmmode \setbox\ULC@box\hbox{\raise1.4ex\box\ULC@box}% \dp\ULC@box-1.4ex\ht\ULC@box\z@ \def\UL@leadtype{\cleaders\copy\ULC@box}% \else @@ -226,36 +235,44 @@ % For drawing a wavey underline instead of a straight one the command % is \uwave (under-wave) which uses the wiggle from 6-pt lasy font: -\def\uwave{\bgroup \markoverwith{\lower3.5\p@\hbox{\sixly \char58}}\ULon} -\font\sixly=lasy6 % does not re-load if already loaded, so no memory problem. +\UL@protected\def\uwave{\leavevmode \bgroup + \ifdim \ULdepth=\maxdimen \ULdepth 3.5\p@ + \else \advance\ULdepth2\p@ + \fi \markoverwith{\lower\ULdepth\hbox{\sixly \char58}}\ULon} +\font\sixly=lasy6 % does not re-load if already loaded, so no memory drain. % To draw a double underline under text, use \uuline{text} -\def\uuline{\bgroup \UL@setULdepth +\UL@protected\def\uuline{\leavevmode \bgroup + \UL@setULdepth + \ifx\UL@on\UL@onin \advance\ULdepth2.8\p@\fi \markoverwith{\lower\ULdepth\hbox - {\kern-.03em\vbox{\hrule width.2em\kern1.2\p@\hrule}\kern-.03em}}% + {\kern-.03em\vbox{\hrule width.2em\kern1\p@\hrule}\kern-.03em}}% \ULon} % To draw a line through text instead of under it (strike out) do % `under'-line with negative depth. Note that this one uses a real % line, not characters, so there is no \markoverwith. -\def\sout{\bgroup \ULdepth=-.55ex \ULset} +\UL@protected\def\sout{\leavevmode \bgroup \ULdepth=-.55ex \ULset} % To mark //// over text instead of underlining (x-out) % -\def\xout{\bgroup \markoverwith{\hbox to.35em{\hss/\hss}}\ULon} +\UL@protected\def\xout{\leavevmode \bgroup + \markoverwith{\hbox to.35em{\hss/\hss}}\ULon} -\def\dotuline{\bgroup +\UL@protected\def\dotuline{\leavevmode \bgroup \UL@setULdepth + \ifx\UL@on\UL@onin \advance\ULdepth2\p@\fi \markoverwith{\begingroup - \advance\ULdepth0.08ex - \lower\ULdepth\hbox{\kern.1em .\kern.04em}% + %\advance\ULdepth0.08ex + \lower\ULdepth\hbox{\kern.06em .\kern.04em}% \endgroup}% \ULon} -\def\dashuline{\bgroup +\UL@protected\def\dashuline{\leavevmode \bgroup \UL@setULdepth + \ifx\UL@on\UL@onin \advance\ULdepth2\p@\fi \markoverwith{\kern.13em \vtop{\kern\ULdepth \hrule width .3em}% \kern.13em}\ULon} @@ -266,13 +283,14 @@ % e.g.: \useunder{\uuline}{\bfseries}{\textbf} % \useunder{\uwave}{\bf}{} -\def\useunder#1#2#3{\relax +\UL@protected\def\useunder#1#2#3{\relax \ifx\relax#2\relax\else % declaration command given - \def#2{\def\@tempa{#1}\global\let\UL@ender\UL@swender + \UL@protected\def#2{\def\@tempa{#1}\global\let\UL@ender\UL@swender \expandafter\@tempa\expandafter{\ifnum\z@=\string`}\fi}% - \MakeRobust{#2}\fi + \fi \ifx\relax#3\relax\else % argumentative command - \def#3{#1}\MakeRobust{#3}\fi} + \UL@protected\def#3{#1}% + \fi} \expandafter\ifx \csname @ifundefined\endcsname \relax @@ -282,23 +300,13 @@ \def\@width{width} \def\@empty{} \long\def\@gobble#1{} - \def\MakeRobust#1{} + \long\def\@firstoftwo#1#2{#1}% + \long\def\@secondoftwo#1#2{#2}% % Do non-outer \newif with no visible \if's or \fi's when skipping \csname newif\expandafter\endcsname \csname if@ignore\endcsname \else - \def\MakeRobust#1{\expandafter\let - \csname \expandafter\@gobble\string#1 \endcsname= #1% - \edef#1{\noexpand\protect \expandafter\noexpand - \csname\expandafter\@gobble\string#1 \endcsname} - } - \MakeRobust\uline - \MakeRobust\uuline - \MakeRobust\uwave - \MakeRobust\sout - \MakeRobust\xout - \let\LA@em\em \let\LA@emph\emph \expandafter\let\expandafter\LA@Pem \csname em \endcsname \expandafter\let\expandafter\LA@Pemph \csname emph \endcsname @@ -313,17 +321,19 @@ % Process LaTeX \package options; plain TeX skips this section \expandafter\ifx\csname ProvidesPackage\endcsname \relax \else - \ProvidesPackage{ulem}[2012/05/18] + \ProvidesPackage{ulem}[2019/11/18] \DeclareOption{normalem}{\normalem} \DeclareOption{ULforem}{\ULforem} \DeclareOption{normalbf}{} \DeclareOption{UWforbf}{\useunder{\uwave}{\bf}{\textbf}} \ProcessOptions % - \AtBeginDocument{\let\UL@marginpar\marginpar}% - \newcommand\UL@marpar[2][\gDefault@pt]{\gdef\gDefault@pt{#2}% + \newcommand\UL@marpar[2][\ULmp@opt@arg]{\gdef\ULmp@opt@arg{#2}% \ifx\ \LA@space \@latexerr{Marginpar lost}% - \else \UL@stop \UL@marginpar[#1]{#2}\UL@start \fi} + \else \UL@stop \LA@marginpar[#1]{#2}\UL@start \fi} +% + \AtBeginDocument{\let\LA@marginpar\marginpar}% +% \addto@hook\UL@hook{\let\marginpar\UL@marpar} \fi @@ -336,174 +346,6 @@ \endinput -%====================== BEGIN INSTRUCTIONS =========================== -These plain text instructions may disappear soon. The primary instructions -are in ulem.ltx (ulem.pdf, ulem.dvi). - -ULEM is a package for LaTeX or plain TeX which provides various types of -underlining that can stretch between words and be broken across lines. -In LaTeX this style replaces italics with underlining in emphasized text -given by \em or \emph -- but only if the text is delimited by braces. A -declaration \normalem (or the \usepackage option [normalem]) restores the -normal \em behavior. For underlining in plain TeX, \input ulem.sty, and -use the \uline command. - -Unlike regular underlining, ulem allows line breaks, and even primitive -hyphenation, within the underlined text; but it is far from perfect. It is -most suitable for simple text like {\em \LaTeX: A document preparation -system\/} that may need to be underlined in a manuscript submitted for -publication. Again, ulem will only replace \em and \emph when the text is -delimited by explicit braces. - -The thickness of the underline rule is given by \ULthickness; use -\renewcommand or \def (not \setlength) to change it. The depth of the -underline is controlled by the length \ULdepth. The default value is a -special flag which lets the current font control the depth. You can set -a particular value to \ULdepth (using \setlength) to force a particular -depth, either locally for a special purpose, or for the document as a -whole. See the definition of \sout. - -Every word is typeset in an underlined box, so automatic hyphenation is -normally disabled, but explicit discretionary hyphens (\-) will still be -obeyed. Several text-formatting commands are specially supported within -the underlining: \-, \ , ~, \\, \newline, \linebreak, \nolinebreak, -\penalty, \hskip, \hspace, \hfil, \hfill, \hss. Displayed math and \par -are deliberately not supported to aid in the detection of runaway arguments -(missing braces). The special commands do have a problem: they end a -group so any local assignments are lost. - -The underlines continue between words, and stretch just like ordinary -spaces do. Since spaces delimit words, there may be some difficulty -with syntactical spaces (e.g. "2.3 pt"). Some effort is made to handle -such cases, but sometimes (such as \let\x= y) the space is interpreted -incorrectly. You can usually solve the problem by enclosing the offending -command in braces or in a macro (\newcommand\xeqy{\let\x= y}), but... - -One important incompatibility with braces and macro replacement: -ALL THE TEXT IN BRACES OR COMING FROM A MACRO IS TYPESET IN A BOX. -That is, braces will suppress stretching and linebreaks in the text they -enclose. Moreover, the specially-taken-care-of commands \-, \\, \newline -and \linebreak are usually ignored if they appear inside extra braces. -They operate only when the braces delimit a command parameter without -introducing a level of grouping. (Even though braces delimiting command -parameters do not normally imply grouping, many commands will add their -own grouping.) Thus, you should try to limit inner braces to short bits of -text or for delimiting parameters to commands. For emergency repairs, see -the "Marat/Sade" example below. Syntactical spaces inside braces never -cause a problem, nor do spaces in math mode. - -Text produced by expansion of a command (macro) is boxed too, but \\, \ -and \- still work properly in the expansion text: - \newcommand\iff{if and only if} {\em \iff} -does not allow any stretching or linebreaking between words, but - \newcommand\iff{if\ and\ only\ if} {\em \iff} -allows stretching and linebreaking. There is a problem though: the -\ between words closes a group and any local assignments will be lost, -in particular, font changes and color changes. - -This loss of local assignments will break some other standard commands, -(e.g., \cite) which produce multiple `words' using local assignments. -The way to protect such commands is to bury them in an \mbox: - {\em every\-one agrees~\mbox{\cite{you,me}}.} - -Nested \em commands produce multiple underlining, but heed the warnings -about braces above. To get italics without underlining, use \it. Nesting -of other types of underline is also possible, but the `underlines' may -overlap. - -HERE IS A SIMPLE EXAMPLE. - -\noindent 'Twas {\em brillig\/} and the {\em slithy~toves\/} -did {\em gyre\/} and {\em gim\-ble\/} in the {\em wabe,\\[2pt] } -All {\em mim\-sey\/} were the {\em boro\-goves\/} and -the {\em mome raths outgrabe}. - -HERE IS A DIFFICULT EXAMPLE. - -\usepackage{ulem} -\setlength\textwidth{3.3in} -\begin{document} -% \large -No, I did {\em not} act in the movie {\em \emph{The} % <<<<<<< Nested -\emph{Persecu}\-\emph{tion} \emph{and} \emph{Assassination} \emph{of} -\emph{Jean-Paul} \emph{Marat}, as per\-formed by the Inmates -of the Asylum of Charenton under the Direc\-tion of the -Marquis de~Sade!} But I {\em did} see it. -\end{document} - -In the nested emphasis, \emph had to be given for each word separately -so the spaces between could stretch and break into lines. Even the -discretionary hyphen (\-) in `Persecution' had to be outside the braces, -but the hyphen in `Direction' was just fine because it was not in nested -braces. The same applies to other special commands like \ and ~. Also, -the spaces are printed with only a single underline because they are -outside the nested \emph commands. This example really illustrates that -ulem does not handle nested emphasis very well! Nevertheless, it is fine -for simple things. - -Underlining can also be done according to \uline{this text}. To use this -type of underlining, but have \em still produce italics, put the command -\normalem in the preamble of the document or load ulem with -\usepackage[normalem]{ulem}. - -Some variations on underlining are provided, including a wavey underline -(\uwave{under-wave}), double underlines (\uuline{two lines under this}), -dashed (\dashuline{dashes underneath}) or dotted (\dotuline{dots below}) -underlines, -a line through text rather than under it (\sout{strike out}), and text -crossed-out with /////// (\xout{cross out, X out}). You can define your -own styles following the examples provided. The definition should be -something like: - -\newcommand\command{\bgroup \markoverwith{something}\ULon} - -The "something" can be as simple as a single character, or as complex as -you can keep track of. - -The various underlining commands are essentially textual, and will not -work quite the same in math mode. But since some font commands, like \bf, -serve both for text and math, math mode is handled (in an approximate way). -The performance in math mode is somewhat different from in text: there will -be no line breaks or stretching in the underlined text, and the vertical -positioning may not be right. The results should be best for \uline, -\uwave, \uuline, and any other truly UNDER-line you define. - -Any type of underlining can be substituted for any font-selection command -by issuing a proper \useunder declaration: - -\useunder{\underlinecommand}{\fontdeclaration}{\fontcommand} - -e.g., \useunder{\uuline}{\bfseries}{\textbf} gives a double underline -instead of bold face in LaTeX. The commands \normalem and \ULforem switch -underlining for \em off and on, respectively, and so do the \usepackage -options [normalem] and [ULforem]. There is also the \usepackage style -option [UWforbf] to replace boldface with a wavey underline. - -UWforbf does handle \bf in math mode, but it doesn't work in section titles, -unfortunately, because the titles are not delimited by explicit braces when -printed by the \section command. For the present version, the \bfseries -command still produces bold face, but \bf makes an under-wave. To get under- -waved section titles you can do - -\renewcommand\@seccntformat[1]{\uwave{\csname the#1\endcsname}\hskip 1em} - -and later specify \section[...]{\uwave{...}}. - -In plain TeX there is no \textbf so you should use \useunder{\UWave}{\bf}{}. -You can even skip a step and define the underline or overprint with \useunder: -\useunder{\bgroup\markoverwith{!}\ULon}{\sf}{} - -Some commands, such as \\ and \hskip are given special treatment, but -others (like \marginpar) are not. Support for others can be added by -assigning special meanings in the token register \UL@hook. (In LaTeX do -\addto@hook\UL@hook{\let\command\ULversion}.) The UL versions of commands -should be modelled on \UL@hskip or \UL@cr, and should include the test -"\ifx\ \LA@space". For example, support for "\marginpar" is added through -the hook mechanism. - -All the underlining commands are robust in LaTeX. - -%====================== END INSTRUCTIONS =========================== % Previous bug-finders: Esther Hu (\hfill in plain); Lones Smith (\tt\-); % Steve Anderson (\ooalign accents); Thanassi Protopapas ( { in tables). @@ -523,6 +365,8 @@ All the underlining commands are robust in LaTeX. % 2010: Include \dotuline and \dashuline, typeset documentation, add \UL@setULdepth % 2011: Change \dimen@ to \UL@height % 2012: Removed \let\par garbage +% 2017: Remove \makerobust +% 2019: Handle \ULdepth better. Some tweaks. % % Send problem reports to asnd@triumf.ca % |