diff options
author | Karl Berry <karl@freefriends.org> | 2016-08-01 21:47:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-08-01 21:47:34 +0000 |
commit | a680fbdd019a24e851538a6dfde26ef301a0a286 (patch) | |
tree | db1472fe87695f0c28151a86b79fa9444072d2a7 | |
parent | 69961a3da1314fa29424307d3862116b626a3c7a (diff) |
mfirstuc (1aug16)
git-svn-id: svn://tug.org/texlive/trunk@41785 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/CHANGES | 6 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/README | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdf | bin | 253433 -> 258742 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.html | 704 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdf | bin | 301194 -> 294036 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.tex | 175 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdf | bin | 81539 -> 114525 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.tex | 160 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/mfirstuc/mfirstuc.dtx | 521 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/mfirstuc/mfirstuc.ins | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/mfirstuc/mfirstuc-english.sty | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty | 199 |
12 files changed, 1294 insertions, 479 deletions
diff --git a/Master/texmf-dist/doc/latex/mfirstuc/CHANGES b/Master/texmf-dist/doc/latex/mfirstuc/CHANGES index a26a2081d53..30af7cc0c23 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/CHANGES +++ b/Master/texmf-dist/doc/latex/mfirstuc/CHANGES @@ -1,5 +1,11 @@ mfirstuc change log: +v2.04: + + * bug fixes in \capitalisefmtwords and \@gls@split + + * added starred form of \capitalisefmtwords + v2.03: * Fixed test for \protect at the start of \makefirstuc diff --git a/Master/texmf-dist/doc/latex/mfirstuc/README b/Master/texmf-dist/doc/latex/mfirstuc/README index d226cadfcf5..34fe2c97502 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/README +++ b/Master/texmf-dist/doc/latex/mfirstuc/README @@ -1,6 +1,6 @@ -LaTeX Package : mfirstuc v2.03 +LaTeX Package : mfirstuc v2.04 -Last Modified : 2016-07-29 +Last Modified : 2016-07-31 Author : Nicola Talbot diff --git a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdf b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdf Binary files differindex bb88c50955c..c6b9d28275c 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdf +++ b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdf diff --git a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.html b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.html index 5b60f1e19c9..70ac173482c 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.html +++ b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.html @@ -127,6 +127,7 @@ table.pmatrix {width:100%;} span.bar-css {text-decoration:overline;} img.cdots{vertical-align:middle;} .partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;} .index-item, .index-subitem, .index-subsubitem {display:block} div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;} div.caption span.id{font-weight: bold; white-space: nowrap; } @@ -143,6 +144,7 @@ div.maketitle{ margin-bottom: 2em; } div.author, div.date {text-align:center;} div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } .quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } +h1.partHead{text-align: center} .abstract p {margin-left:5%; margin-right:5%;} div.abstract {width:100%;} .alltt P { margin-bottom : 0em; margin-top : 0em; } @@ -172,7 +174,7 @@ span#textcolor1{color:#FF0000} > <!--l. 36--><p class="noindent" > </p><!--l. 36--><p class="noindent" ><span -class="cmr-17">mfirstuc.sty v2.03: uppercasing first letter</span> +class="cmr-17">mfirstuc.sty v2.04: uppercasing first letter</span> </p> <div class="tabular"> <table id="TBL-1" class="tabular" cellspacing="0" cellpadding="0" @@ -194,36 +196,38 @@ href="http://www.dickimaw-books.com/" class="url" ><span class="cmtt-12">http://www.dickimaw-books.com/</span></a></td></tr></table> </div> <!--l. 36--><p class="noindent" ><span -class="cmr-12">2016-07-29</span></p></div> - <h3 class="likesectionHead"><a - id="x1-1000"></a>Contents</h3> - <div class="tableofcontents"> - <span class="sectionToc" >1 <a +class="cmr-12">2016-07-31</span></p></div> + + + + <h2 class="likechapterHead"><a + id="x1-1000"></a>Contents</h2> <div class="tableofcontents"> + <span class="chapterToc" >1 <a href="#sec:intro" id="QQ2-1-2">Introduction</a></span> -<br /> <span class="sectionToc" >2 <a +<br /> <span class="chapterToc" >2 <a href="#sec:makefirstuc" id="QQ2-1-3">Capitalising the First Letter of a Word</a></span> -<br /> <span class="sectionToc" >3 <a +<br /> <span class="chapterToc" >3 <a href="#sec:capitalisewords" id="QQ2-1-4">Capitalise the First Letter of Each Word in a Phrase or Sentence (Title Case)</a></span> -<br />  <span class="subsectionToc" >3.1 <a +<br />  <span class="sectionToc" >3.1 <a href="#sec:pdfbookmarks" id="QQ2-1-5">PDF Bookmarks</a></span> -<br />  <span class="subsectionToc" >3.2 <a +<br />  <span class="sectionToc" >3.2 <a href="#sec:nocap" id="QQ2-1-6">Excluding Words From Case-Changing</a></span> -<br /> <span class="sectionToc" >4 <a +<br /> <span class="chapterToc" >4 <a href="#sec:utf8" id="QQ2-1-7">UTF-8</a></span> </div> -<!--l. 39--><p class="noindent" > -</p> -<!--l. 39--><p class="noindent" ><a -href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1 </span> <a - id="sec:intro"></a>Introduction</h3> -<!--l. 42--><p class="noindent" >The <span + + + +<!--l. 39--><p class="indent" > <div class="chapter"><h2 class="chapterHead">1. <a + id="sec:intro"></a>Introduction</h2> +</p><!--l. 42--><p class="indent" > The <span class="cmss-10">mfirstuc </span>package was originally part of the <span -class="cmss-10">glossaries </span>bundle for use with commands like -<span +class="cmss-10">glossaries </span>bundle for use with commands +like <span class="cmtt-10">\Gls</span>, but as the commands provided by <span class="cmss-10">mfirstuc </span>may be used without <span -class="cmss-10">glossaries</span>, the two have -been split into separately maintained packages. +class="cmss-10">glossaries</span>, the two +have been split into separately maintained packages. </p><!--l. 48--><p class="indent" > <div class="important" title="Important Note"> The commands described here all have limitations. To minimise problems, use text-block style semantic commands with one argument (the text that requires case-changing), and avoid scoped declarations. </div> @@ -291,14 +295,17 @@ class="cmtt-10">\emakefirstuc</span>, <span class="cmtt-10">\ecapitalisewords </span>and <span class="cmtt-10">\ecapitalisefmtwords</span>). -</p><!--l. 102--><p class="noindent" > + + + </p> -<!--l. 102--><p class="noindent" ><a -href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2 </span> <a - id="sec:makefirstuc"></a>Capitalising the First Letter of a Word</h3> -<!--l. 105--><p class="noindent" >A simple word can be capitalised just using the standard <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span -class="E">E</span>X</span></span> upper casing command. For -example, +<!--l. 102--><p class="indent" > </div> +</p><!--l. 102--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">2. <a + id="sec:makefirstuc"></a>Capitalising the First Letter of a Word</h2> +</p><!--l. 105--><p class="indent" > A simple word can be capitalised just using the standard <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> upper casing command. +For example, @@ -390,30 +397,67 @@ class="cmtt-10">\makefirstuc{{</span><span class="cmtt-10">ä</span><span class="cmtt-10">}bc}</span></span></span> produces Äbc. </li></ul> -<!--l. 161--><p class="noindent" >Note that non-Latin or accented characters appearing at the start of the text must be placed in a -group (even if you are using the <span +<!--l. 162--><p class="indent" > Note that non-Latin or accented characters appearing at the start of the text should be +placed in a group (even if you are using the <span class="cmss-10">inputenc</span><a - id="dx1-3003"></a> package). The reason for this restriction is detailed in -<a + id="dx1-3003"></a> package). The reason for this restriction +is detailed in <a href="#sec:utf8"><span class="cmsy-10">§</span>4 </a><a href="#sec:utf8">UTF-8<!--tex4ht:ref: sec:utf8 --></a>. -</p><!--l. 166--><p class="indent" > <div class="important" title="Important Note"> In version 1.02 of <span +</p><!--l. 167--><p class="indent" > <span +class="cmbx-10">New to version 2.04: </span>There is now limited support for UTF-8 characters with the +<span +class="cmss-10">inputenc</span><a + id="dx1-3004"></a> package, provided that you load <span +class="cmss-10">datatool-base</span><a + id="dx1-3005"></a> (at least v2.24) before <span +class="cmss-10">mfirstuc</span> +(<span +class="cmss-10">datatool-base</span><a + id="dx1-3006"></a> is loaded automatically with newer versions of <span +class="cmss-10">glossaries</span><a + id="dx1-3007"></a>). If available <span +class="cmss-10">mfirstuc</span><a + id="dx1-3008"></a> +will now use <span +class="cmss-10">datatool-base</span><a + id="dx1-3009"></a>’s <span +class="cmtt-10">\dtl@getfirst@UTFviii</span><a + id="dx1-3010"></a> command which is still experimental. +See the <span +class="cmss-10">datatool </span>manual for further details. + + + +</p> + <div class="verbatim" id="verbatim-9"> +\documentclass{article} + <br />\usepackage[T1]{fontenc} + <br />\usepackage[utf8]{inputenc} + <br />\usepackage{datatool-base}[2016/01/12]% v2.24+ + <br />\usepackage{mfirstuc} + <br />\begin{document} + <br />\makefirstuc{élite} + <br />\end{document} +</div> +<!--l. 188--><p class="nopar" > (Package ordering is important.) +</p><!--l. 191--><p class="indent" > <div class="important" title="Important Note"> In version 1.02 of <span class="cmss-10">mfirstuc</span>, a bug fix resulted in a change in output if the first object is a control sequence followed by an empty group. Prior to version 1.02, <span class="obeylines-h"><span class="verb"><span class="cmtt-10">\makefirstuc{\ae{}bc}</span></span></span> produced æBc. However as from version 1.02, it now produces Æbc. </div> -</p><!--l. 172--><p class="noindent" > -</p><!--l. 174--><p class="indent" > Note also that +</p><!--l. 197--><p class="noindent" > +</p><!--l. 199--><p class="indent" > Note also that </p> - <div class="verbatim" id="verbatim-9"> + <div class="verbatim" id="verbatim-10"> \newcommand{\abc}{abc}  <br />\makefirstuc{\abc} </div> -<!--l. 178--><p class="nopar" > produces: ABC. This is because the first object in the argument of <span +<!--l. 203--><p class="nopar" > produces: ABC. This is because the first object in the argument of <span class="cmtt-10">\makefirstuc </span>is <span class="cmtt-10">\abc</span>, so it does <span class="obeylines-h"><span class="verb"><span @@ -422,19 +466,19 @@ class="cmtt-10">\MakeUppercase{\abc}</span></span></span>. Whereas: </p> - <div class="verbatim" id="verbatim-10"> + <div class="verbatim" id="verbatim-11"> \newcommand{\abc}{abc}  <br />\expandafter\makefirstuc\expandafter{\abc} </div> -<!--l. 185--><p class="nopar" > produces: Abc. There is a short cut command which will do this: -</p><!--l. 187--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +<!--l. 210--><p class="nopar" > produces: Abc. There is a short cut command which will do this: +</p><!--l. 212--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\xmakefirstuc</span><span class="cmtt-9"> </span></span><a - id="dx1-3004"></a> <span + id="dx1-3011"></a> <span class="cmtt-10">\xmakefirstuc{</span>⟨<span class="cmitt-10">stuff</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 189--><p class="noindent" > +</p><!--l. 214--><p class="noindent" > This is equivalent to <span class="cmtt-10">\expandafter\makefirstuc\expandafter{</span>⟨<span class="cmti-10">stuff </span>⟩<span @@ -443,94 +487,96 @@ class="cmtt-10">}</span>. So </p> - <div class="verbatim" id="verbatim-11"> + <div class="verbatim" id="verbatim-12"> \newcommand{\abc}{abc}  <br />\xmakefirstuc{\abc} </div> -<!--l. 194--><p class="nopar" > produces: Abc. -</p><!--l. 199--><p class="indent" > <div class="important" title="Important Note"> <span +<!--l. 219--><p class="nopar" > produces: Abc. +</p><!--l. 224--><p class="indent" > <div class="important" title="Important Note"> <span class="cmtt-10">\xmakefirstuc </span>only performs one level expansion on the <span class="cmti-10">first </span>object in its argument. It does not fully expand the entire argument. </div> -</p><!--l. 203--><p class="noindent" > -</p><!--l. 205--><p class="indent" > As from version 1.10, there is now a command that fully expands the entire argument +</p><!--l. 228--><p class="noindent" > +</p><!--l. 230--><p class="indent" > As from version 1.10, there is now a command that fully expands the entire argument before applying <span class="cmtt-10">\makefirstuc</span>: -</p><!--l. 207--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 232--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\emakefirstuc</span><span class="cmtt-9"> </span></span><a - id="dx1-3005"></a> <span + id="dx1-3012"></a> <span class="cmtt-10">\emakefirstuc{</span>⟨<span class="cmitt-10">text</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 209--><p class="noindent" > -</p><!--l. 211--><p class="indent" > Examples: +</p><!--l. 234--><p class="noindent" > +</p><!--l. 236--><p class="indent" > Examples: </p> - <div class="verbatim" id="verbatim-12"> + <div class="verbatim" id="verbatim-13"> \newcommand{\abc}{\xyz a}  <br />\newcommand{\xyz}{xyz}  <br />No expansion: \makefirstuc{\abc}.  <br />First object one-level expansion: \xmakefirstuc{\abc}.  <br />Fully expanded: \emakefirstuc{\abc}. </div> -<!--l. 218--><p class="nopar" > produces: No expansion: XYZA. First object one-level expansion: XYZa. Fully expanded: +<!--l. 243--><p class="nopar" > produces: No expansion: XYZA. First object one-level expansion: XYZa. Fully expanded: Xyza. -</p><!--l. 226--><p class="indent" > If you use <span +</p><!--l. 251--><p class="indent" > If you use <span class="cmss-10">mfirstuc </span>without the <span class="cmss-10">glossaries</span><a - id="dx1-3006"></a> package, the standard <span + id="dx1-3013"></a> package, the standard <span class="cmtt-10">\MakeUppercase </span>command is used. If used with <span class="cmss-10">glossaries</span><a - id="dx1-3007"></a>, <span + id="dx1-3014"></a>, <span class="cmtt-10">\MakeTextUppercase</span><a - id="dx1-3008"></a> (defined by the <span + id="dx1-3015"></a> (defined by the <span class="cmss-10">textcase</span><a - id="dx1-3009"></a> package) is used + id="dx1-3016"></a> package) is used instead. If you are using <span class="cmss-10">mfirstuc </span>without the <span class="cmss-10">glossaries </span>package and want to use <span class="cmtt-10">\MakeTextUppercase</span><a - id="dx1-3010"></a> instead, you can redefine -</p><!--l. 232--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span + id="dx1-3017"></a> instead, you can redefine +</p><!--l. 257--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\glsmakefirstuc</span><span class="cmtt-9"> </span></span><a - id="dx1-3011"></a> <span + id="dx1-3018"></a> <span class="cmtt-10">\glsmakefirstuc{</span>⟨<span class="cmitt-10">text</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 234--><p class="noindent" > +</p><!--l. 259--><p class="noindent" > For example: </p> - <div class="verbatim" id="verbatim-13"> + <div class="verbatim" id="verbatim-14"> \renewcommand{\glsmakefirstuc}[1]{\MakeTextUppercase #1} </div> -<!--l. 238--><p class="nopar" > Remember to also load <span +<!--l. 263--><p class="nopar" > Remember to also load <span class="cmss-10">textcase</span><a - id="dx1-3012"></a> (<span + id="dx1-3019"></a> (<span class="cmss-10">glossaries </span>loads this automatically). -</p><!--l. 242--><p class="noindent" > + + + </p> -<!--l. 242--><p class="noindent" ><a -href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3 </span> <a - id="sec:capitalisewords"></a>Capitalise the First Letter of Each Word in a Phrase or Sentence (Title -Case)</h3> -<!--l. 245--><p class="noindent" >New to mfirstuc v1.06: -</p><!--l. 246--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +<!--l. 267--><p class="indent" > </div> +</p><!--l. 267--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">3. <a + id="sec:capitalisewords"></a>Capitalise the First Letter of Each Word in a Phrase or Sentence (Title Case)</h2> +</p><!--l. 270--><p class="indent" > New to mfirstuc v1.06: +</p><!--l. 271--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\capitalisewords</span><span class="cmtt-9"> </span></span><a id="dx1-4001"></a> <span class="cmtt-10">\capitalisewords{</span>⟨<span class="cmitt-10">text</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 248--><p class="noindent" > +</p><!--l. 273--><p class="noindent" > This command applies <span class="cmtt-10">\makefirstuc</span><a id="dx1-4002"></a> to each word in ⟨<span @@ -545,50 +591,50 @@ class="cmsy-10">§</span>3.2 </a><a href="#sec:nocap">Excluding Words From Case-Changing<!--tex4ht:ref: sec:nocap --></a> for excluding words (such as “of”) from the case-changing. -</p><!--l. 256--><p class="indent" > The actual capitalisation of each word is done using (new to version 2.03): -</p><!--l. 258--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 281--><p class="indent" > The actual capitalisation of each word is done using (new to version 2.03): +</p><!--l. 283--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\MFUcapword</span><span class="cmtt-9"> </span></span><a id="dx1-4003"></a> <span class="cmtt-10">\MFUcapword{</span>⟨<span class="cmitt-10">word</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 260--><p class="noindent" > +</p><!--l. 285--><p class="noindent" > This just does <span class="cmtt-10">\makefirstuc{</span>⟨<span class="cmti-10">word</span>⟩<span class="cmtt-10">} </span>by default, but its behaviour is determined by the conditional: -</p><!--l. 263--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 288--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\ifMFUhyphen</span><span class="cmtt-9"> </span></span><a id="dx1-4004"></a> <span class="cmtt-10">\ifMFUhyphen </span></div><hr> -</p><!--l. 265--><p class="noindent" > -</p><!--l. 267--><p class="indent" > If you want to title case each part of a compound word containing hyphens, you can enable +</p><!--l. 290--><p class="noindent" > +</p><!--l. 292--><p class="indent" > If you want to title case each part of a compound word containing hyphens, you can enable this using -</p><!--l. 269--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 294--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\MFUhyphentrue</span><span class="cmtt-9"> </span></span><a id="dx1-4005"></a> <span class="cmtt-10">\MFUhyphentrue </span></div><hr> -</p><!--l. 271--><p class="noindent" > +</p><!--l. 296--><p class="noindent" > or switch it back off again using: -</p><!--l. 273--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 298--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\MFUhyphenfalse</span><span class="cmtt-9"> </span></span><a id="dx1-4006"></a> <span class="cmtt-10">\MFUhyphenfalse </span></div><hr> -</p><!--l. 275--><p class="noindent" > +</p><!--l. 300--><p class="noindent" > Compare </p> - <div class="verbatim" id="verbatim-14"> + <div class="verbatim" id="verbatim-15"> \capitalisewords{server-side includes} </div> -<!--l. 279--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 304--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />Server-side Includes <br /><spacer type=vertical size=10></span> with @@ -596,14 +642,14 @@ with </p> - <div class="verbatim" id="verbatim-15"> + <div class="verbatim" id="verbatim-16"> \MFUhyphentrue  <br />\capitalisewords{server-side includes} </div> -<!--l. 288--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 313--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />Server-Side Includes <br /><spacer type=vertical size=10></span> -</p><!--l. 295--><p class="indent" > Formatting for the entire phrase must go outside <span +</p><!--l. 320--><p class="indent" > Formatting for the entire phrase must go outside <span class="cmtt-10">\capitalisewords </span>(unlike <span class="cmtt-10">\makefirstuc</span>). Compare: @@ -611,10 +657,10 @@ class="cmtt-10">\makefirstuc</span>). Compare: </p> - <div class="verbatim" id="verbatim-16"> + <div class="verbatim" id="verbatim-17"> \capitalisewords{\textbf{a sample phrase}} </div> -<!--l. 299--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 324--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> <br /><span class="cmbx-10">A sample phrase</span> <br /><spacer type=vertical size=10></span> @@ -623,20 +669,20 @@ with: </p> - <div class="verbatim" id="verbatim-17"> + <div class="verbatim" id="verbatim-18"> \textbf{\capitalisewords{a sample phrase}} </div> -<!--l. 307--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 332--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h"> <br /><span class="cmbx-10">A Sample Phrase</span> <br /><spacer type=vertical size=10></span> -</p><!--l. 313--><p class="indent" > As from version 2.03, there is now a command for phrases that may include a formatting +</p><!--l. 338--><p class="indent" > As from version 2.03, there is now a command for phrases that may include a formatting command: -</p><!--l. 316--><p class="indent" > <hr><div title="Definition"><span +</p><!--l. 341--><p class="indent" > <hr><div title="Definition"><span class="cmtt-10">\capitalisefmtwords{</span>⟨<span class="cmitt-10">phrase</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 317--><p class="noindent" > +</p><!--l. 342--><p class="noindent" > where ⟨<span class="cmti-10">phrase</span>⟩ may be just words (as with <span class="cmtt-10">\capitalisewords</span>) or may be entirely enclosed in a @@ -667,17 +713,24 @@ class="cmitt-10">words</span>⟩<span class="cmsy-10">}</span> </div> </div> Avoid scoped declarations. -<!--l. 329--><p class="indent" > Examples: +<!--l. 354--><p class="indent" > <div class="important" title="Important Note"> <span +class="cmtt-10">\capitalisefmtwords </span>is only designed for phrases that contain text-block commands +with a single argument, which should be a word or sub-phrase. Anything more complicated is +likely to break. Instead, use the starred form or <span +class="cmtt-10">\capitalisewords</span>. </div> +</p><!--l. 360--><p class="noindent" > +</p><!--l. 362--><p class="indent" > The starred form only permits a text-block command at the start of the phrase. +</p><!--l. 365--><p class="indent" > Examples: </p><ol class="enumerate1" > <li class="enumerate" id="x1-4008x1">Phrase entirely enclosed in a formatting command: - <div class="verbatim" id="verbatim-18"> + <div class="verbatim" id="verbatim-19"> \capitalisefmtwords{\textbf{a small book of rhyme}} </div> - <!--l. 334--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <!--l. 370--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br /><span class="cmbx-10">A Small Book Of Rhyme</span> <br /><spacer type=vertical size=10></span> @@ -687,10 +740,10 @@ class="cmbx-10">A Small Book Of Rhyme</span> - <div class="verbatim" id="verbatim-19"> + <div class="verbatim" id="verbatim-20"> \capitalisefmtwords{a \textbf{small book} of rhyme} </div> - <!--l. 343--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <!--l. 379--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />A <span class="cmbx-10">Small Book </span>Of Rhyme <br /><spacer type=vertical size=10></span> @@ -700,10 +753,10 @@ class="cmbx-10">Small Book </span>Of Rhyme - <div class="verbatim" id="verbatim-20"> + <div class="verbatim" id="verbatim-21"> \capitalisefmtwords{\textbf{a \emph{small book}} of rhyme} </div> - <!--l. 352--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <!--l. 388--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br /><span class="cmbx-10">A </span><span class="cmbxti-10">Small Book </span>Of Rhyme @@ -718,25 +771,88 @@ href="#sec:nocap">Excluding Words From - <div class="verbatim" id="verbatim-21"> + <div class="verbatim" id="verbatim-22"> \MFUnocap{of}  <br />\capitalisefmtwords{\textbf{a \emph{small book}} of rhyme} </div> - <!--l. 363--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <!--l. 399--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br /><span class="cmbx-10">A </span><span class="cmbxti-10">Small Book </span>of Rhyme <br /><spacer type=vertical size=10></span> - </p></li></ol> -<!--l. 371--><p class="indent" > Grouping causes interference: + </p></li> + <li + class="enumerate" id="x1-4016x5">Starred form: + + + + <div class="verbatim" id="verbatim-23"> + \MFUnocap{of} +  <br />\capitalisefmtwords*{\emph{a small book of rhyme}} +</div> + <!--l. 410--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <br /><span +class="cmti-10">A Small Book of Rhyme</span> + <br /><spacer type=vertical size=10></span> + </p></li> + <li + class="enumerate" id="x1-4018x6">The starred form also works with just text (no text-block command): + + + + <div class="verbatim" id="verbatim-24"> + \MFUnocap{of} +  <br />\capitalisefmtwords*{a small book of rhyme} +</div> + <!--l. 422--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <br />A Small Book of Rhyme + <br /><spacer type=vertical size=10></span> +</p> + </li></ol> +<!--l. 431--><p class="indent" > If there is a text-block command within the argument of the starred form, it’s assumed to +be at the start of the argument. Unexpected results can occur if there are other commands. +For example + + + +</p> + <div class="verbatim" id="verbatim-25"> +\MFUnocap{of} + <br />\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}} +</div> +<!--l. 438--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <br /><span +class="cmti-10">A Small </span>Book <span +class="cmbx-10">Of rhyme</span> + <br /><spacer type=vertical size=10></span> +(In this case <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\textbf{of</span><span +class="cmtt-10"> rhyme}</span></span></span> is considered a single word.) Similarly if the text-block +command occurs in the middle of the argument: </p> - <div class="verbatim" id="verbatim-22"> + <div class="verbatim" id="verbatim-26"> +\MFUnocap{of} + <br />\capitalisefmtwords*{a \emph{very small} book of rhyme} +</div> +<!--l. 450--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <br />A <span +class="cmti-10">Very small </span>Book of Rhyme + <br /><spacer type=vertical size=10></span> +(In this case <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\emph{very</span><span +class="cmtt-10"> small}</span></span></span> is considered a single word.) +</p><!--l. 459--><p class="indent" > Grouping causes interference: + + + +</p> + <div class="verbatim" id="verbatim-27"> \capitalisefmtwords{{a \emph{small book}} of rhyme} </div> -<!--l. 374--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 462--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />A <span class="cmti-10">Small book </span>Of Rhyme <br /><spacer type=vertical size=10></span> @@ -746,149 +862,207 @@ fails: </p> - <div class="verbatim" id="verbatim-23"> + <div class="verbatim" id="verbatim-28"> \capitalisefmtwords{{\bfseries a \emph{small book}} of rhyme} </div> -<!--l. 383--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 471--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />a <span class="cmti-10">Small book </span>Of Rhyme <br /><spacer type=vertical size=10></span> -</p><!--l. 389--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 477--><p class="indent" > Avoid complicated commands in the unstarred version. For example, the following +breaks: + + + +</p> + <div class="verbatim" id="verbatim-29"> +\newcommand*{\swap}[2]{{#2}{#1}} + <br />\capitalisefmtwords{a \swap{bo}{ok} of rhyme} +</div> +<!--l. 482--><p class="nopar" > However it works okay with the starred form and the simpler <span +class="cmtt-10">\capitalisewords</span>: + + + +</p> + <div class="verbatim" id="verbatim-30"> +\newcommand*{\swap}[2]{{#2}{#1}} + <br />\capitalisefmtwords*{a \swap{bo}{ok} of rhyme} + <br />\capitalisewords{a \swap{bo}{ok} of rhyme} +</div> +<!--l. 490--><p class="nopar" > Produces: <spacer type=vertical size=10><span class="obeylines-h"> + <br />A okBo Of Rhyme + <br />A okBo Of Rhyme + <br /><spacer type=vertical size=10></span> +Note that the case change is applied to the first argument. +</p><!--l. 500--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\xcapitalisewords</span><span class="cmtt-9"> </span></span><a - id="dx1-4015"></a> <span + id="dx1-4019"></a> <span class="cmtt-10">\xcapitalisewords{</span>⟨<span class="cmitt-10">text</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 391--><p class="noindent" > +</p><!--l. 502--><p class="noindent" > This is a short cut for <span class="cmtt-10">\expandafter\capitalisewords\expandafter{</span>⟨<span class="cmti-10">text</span>⟩<span class="cmtt-10">}</span>. -</p><!--l. 395--><p class="indent" > As from version 1.10, there is now a command that fully expands the entire argument +</p><!--l. 506--><p class="indent" > As from version 1.10, there is now a command that fully expands the entire argument before applying <span class="cmtt-10">\capitalisewords</span>: -</p><!--l. 397--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 508--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\ecapitalisewords</span><span class="cmtt-9"> </span></span><a - id="dx1-4016"></a> <span + id="dx1-4020"></a> <span class="cmtt-10">\ecapitalisewords{</span>⟨<span class="cmitt-10">text</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 399--><p class="noindent" > -</p><!--l. 401--><p class="indent" > There are also similar shortcut commands for the version that allows formatting +</p><!--l. 510--><p class="noindent" > +</p><!--l. 512--><p class="indent" > There are also similar shortcut commands for the version that allows text-block commands: -</p><!--l. 403--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 514--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\xcapitalisefmtwords</span><span class="cmtt-9"> </span></span><a - id="dx1-4017"></a> <span + id="dx1-4021"></a> <span class="cmtt-10">\xcapitalisefmtwords{</span>⟨<span class="cmitt-10">text</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 405--><p class="noindent" > -This is a short cut for <span -class="cmtt-10">\expandafter\capitalisefmtwords\expandafter{</span>⟨<span +</p><!--l. 516--><p class="noindent" > +The unstarred version is a short cut for <span +class="cmtt-10">\expandafter\capitalisefmtwords\expandafter</span> +<span +class="cmtt-10">{</span>⟨<span class="cmti-10">text</span>⟩<span -class="cmtt-10">}</span>. -</p><!--l. 409--><p class="indent" > For full expansion: -</p><!--l. 410--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-10">}</span>. Similarly the starred version of <span +class="cmtt-10">\xcapitalisefmtwords </span>uses the starred version of +<span +class="cmtt-10">\capitalisefmtwords</span>. +</p><!--l. 522--><p class="indent" > For full expansion: +</p><!--l. 523--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\ecapitalisefmtwords</span><span class="cmtt-9"> </span></span><a - id="dx1-4018"></a> <span + id="dx1-4022"></a> <span class="cmtt-10">\ecapitalisefmtwords{</span>⟨<span class="cmitt-10">text</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 412--><p class="noindent" > -Take care with this as it may expand non-robust semantic commands to replacement text that -breaks the functioning of <span -class="cmtt-10">\capitalisefmtwords</span>. Use robust semantic commands where -possible. -</p><!--l. 418--><p class="indent" > Examples: +</p><!--l. 525--><p class="noindent" > +Take care with this as it may expand non-robust semantic commands to replacement +text that breaks the functioning of <span +class="cmtt-10">\capitalisefmtwords</span>. Use robust semantic +commands where possible. Again this has a starred version that uses the starred form of +<span +class="cmtt-10">\capitalisefmtwords</span>. +</p><!--l. 532--><p class="indent" > Examples: </p> - <div class="verbatim" id="verbatim-24"> + <div class="verbatim" id="verbatim-31"> \newcommand{\abc}{\xyz\space four five}  <br />\newcommand{\xyz}{one two three}  <br />No expansion: \capitalisewords{\abc}.  <br />First object one-level expansion: \xcapitalisewords{\abc}.  <br />Fully expanded: \ecapitalisewords{\abc}. </div> -<!--l. 425--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 539--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />No expansion: ONE TWO THREE FOUR FIVE. <br />First object one-level expansion: ONE TWO THREE four Five. <br />Fully expanded: One Two Three Four Five. <br /><spacer type=vertical size=10></span> -</p><!--l. 435--><p class="indent" > (Remember that the spaces need to be explicit. In the second case above, using +</p><!--l. 549--><p class="indent" > (Remember that the spaces need to be explicit. In the second case above, using <span class="cmtt-10">\xcapitalisewords</span>, the space before “four” has been hidden within <span class="cmtt-10">\space </span>so it’s not recognised as a word boundary, but in the third case, <span class="cmtt-10">\space </span>has been expanded to an actual space character.) -</p><!--l. 441--><p class="indent" > Examples: +</p><!--l. 555--><p class="indent" > Examples: </p><ol class="enumerate1" > <li - class="enumerate" id="x1-4020x1"> + class="enumerate" id="x1-4024x1"> - <div class="verbatim" id="verbatim-25"> + <div class="verbatim" id="verbatim-32"> \capitalisewords{a book of rhyme.} </div> - <!--l. 446--><p class="nopar" > produces: A Book Of Rhyme. + <!--l. 560--><p class="nopar" > produces: A Book Of Rhyme. </p></li> <li - class="enumerate" id="x1-4022x2"> + class="enumerate" id="x1-4026x2"> - <div class="verbatim" id="verbatim-26"> + <div class="verbatim" id="verbatim-33"> \capitalisewords{a book\space of rhyme.} </div> - <!--l. 453--><p class="nopar" > produces: A Book of Rhyme. + <!--l. 567--><p class="nopar" > produces: A Book of Rhyme. </p></li> <li - class="enumerate" id="x1-4024x3"> + class="enumerate" id="x1-4028x3"> - <div class="verbatim" id="verbatim-27"> + <div class="verbatim" id="verbatim-34"> \newcommand{\mytitle}{a book\space of rhyme.}  <br />\capitalisewords{\mytitle} </div> - <!--l. 461--><p class="nopar" > produces: A BOOK OF RHYME. (No expansion is performed on <span + <!--l. 575--><p class="nopar" > produces: A BOOK OF RHYME. (No expansion is performed on <span class="cmtt-10">\mytitle</span>.) Compare with next example: </p></li> <li - class="enumerate" id="x1-4026x4"> + class="enumerate" id="x1-4030x4"> - <div class="verbatim" id="verbatim-28"> + <div class="verbatim" id="verbatim-35"> \newcommand{\mytitle}{a book\space of rhyme.}  <br />\xcapitalisewords{\mytitle} </div> - <!--l. 471--><p class="nopar" > produces: A Book of Rhyme. - </p><!--l. 475--><p class="noindent" >However + <!--l. 585--><p class="nopar" > produces: A Book of Rhyme. + </p><!--l. 589--><p class="noindent" >However </p> - <div class="verbatim" id="verbatim-29"> + <div class="verbatim" id="verbatim-36"> \ecapitalisewords{\mytitle} </div> - <!--l. 478--><p class="nopar" > produces: A Book Of Rhyme. -</p> - </li></ol> -<!--l. 484--><p class="noindent" > + <!--l. 592--><p class="nopar" > produces: A Book Of Rhyme. (<span +class="cmtt-10">\space </span>has been expanded to an actual space + character.) + </p></li> + <li + class="enumerate" id="x1-4032x5"> + + + + <div class="verbatim" id="verbatim-37"> + \newcommand*{\swap}[2]{{#2}{#1}} +  <br />\capitalisewords{a \swap{bo}{ok} of rhyme} +  <br />\ecapitalisewords{a \swap{bo}{ok} of rhyme} +</div> + <!--l. 603--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> + <br />A okBo Of Rhyme + <br />A OKbo Of Rhyme + <br /><spacer type=vertical size=10></span> + This is because the argument of <span +class="cmtt-10">\ecapitalisewords </span>is fully expanded before being + passed to <span +class="cmtt-10">\capitalisewords </span>so that last example is equivalent to: + + + </p> -<!--l. 484--><p class="noindent" ><a -href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">3.1 </span> <a - id="sec:pdfbookmarks"></a>PDF Bookmarks</h4> -<!--l. 487--><p class="noindent" ><div class="important" title="Important Note"> If you are using <span + <div class="verbatim" id="verbatim-38"> + \capitalisewords{a {ok}{bo} of rhyme} +</div> + <!--l. 616--><p class="nopar" ></p></li></ol> +<!--l. 619--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.1 </span> <a + id="sec:pdfbookmarks"></a>PDF Bookmarks</h3> +<!--l. 622--><p class="noindent" ><div class="important" title="Important Note"> If you are using <span class="cmss-10">hyperref</span><a id="dx1-5001"></a> and want to use <span class="cmtt-10">\capitalisewords</span>, <span @@ -902,14 +1076,14 @@ like: </p> - <div class="verbatim" id="verbatim-30"> + <div class="verbatim" id="verbatim-39"> Package hyperref Warning: Token not allowed in a PDF string  <br />(PDFDocEncoding):  <br />(hyperref)                removing ‘\capitalisewords’ </div> -<!--l. 497--><p class="nopar" > </div> -</p><!--l. 498--><p class="noindent" > -</p><!--l. 500--><p class="noindent" >If you want to provide an alternative for the PDF bookmark, you can use <span +<!--l. 632--><p class="nopar" > </div> +</p><!--l. 633--><p class="noindent" > +</p><!--l. 635--><p class="noindent" >If you want to provide an alternative for the PDF bookmark, you can use <span class="cmss-10">hyperref</span><a id="dx1-5003"></a>’s <span @@ -919,13 +1093,13 @@ class="cmtt-10">\texorpdfstring</span><a </p> - <div class="verbatim" id="verbatim-31"> + <div class="verbatim" id="verbatim-40"> \chapter{\texorpdfstring  <br />  {\capitalisewords{a book of rhyme}}% TeX  <br />  {A Book of Rhyme}% PDF  <br />} </div> -<!--l. 507--><p class="nopar" > Alternatively, you can use <span +<!--l. 642--><p class="nopar" > Alternatively, you can use <span class="cmss-10">hyperref</span><a id="dx1-5005"></a>’s mechanism for disabling commands within the bookmarks. For example: @@ -933,73 +1107,73 @@ bookmarks. For example: </p> - <div class="verbatim" id="verbatim-32"> + <div class="verbatim" id="verbatim-41"> \pdfstringdefDisableCommands{%  <br /> \let\capitalisewords\@firstofone  <br />} </div> -<!--l. 514--><p class="nopar" > -</p><!--l. 516--><p class="indent" > See the <span +<!--l. 649--><p class="nopar" > +</p><!--l. 651--><p class="indent" > See the <span class="cmss-10">hyperref</span><a id="dx1-5006"></a> manual for further details. -</p><!--l. 518--><p class="noindent" > +</p><!--l. 653--><p class="noindent" > </p> -<!--l. 518--><p class="noindent" ><a -href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">3.2 </span> <a - id="sec:nocap"></a>Excluding Words From Case-Changing</h4> -<!--l. 521--><p class="noindent" >As from v1.09, you can specify words which shouldn’t be capitalised unless they occur at the +<!--l. 653--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.2 </span> <a + id="sec:nocap"></a>Excluding Words From Case-Changing</h3> +<!--l. 656--><p class="noindent" >As from v1.09, you can specify words which shouldn’t be capitalised unless they occur at the start of ⟨<span class="cmti-10">text</span>⟩ using: -</p><!--l. 523--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 658--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\MFUnocap</span><span class="cmtt-9"> </span></span><a id="dx1-6001"></a> <span class="cmtt-10">\MFUnocap{</span>⟨<span class="cmitt-10">word</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 525--><p class="noindent" > +</p><!--l. 660--><p class="noindent" > This only has a local effect. The global version is: -</p><!--l. 527--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 662--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\gMFUnocap</span><span class="cmtt-9"> </span></span><a id="dx1-6002"></a> <span class="cmtt-10">\gMFUnocap{</span>⟨<span class="cmitt-10">word</span>⟩<span class="cmtt-10">} </span></div><hr> -</p><!--l. 529--><p class="noindent" > -</p><!--l. 531--><p class="indent" > For example: +</p><!--l. 664--><p class="noindent" > +</p><!--l. 666--><p class="indent" > For example: </p> - <div class="verbatim" id="verbatim-33"> + <div class="verbatim" id="verbatim-42"> \capitalisewords{the wind in the willows}  <br />\MFUnocap{in}%  <br />\MFUnocap{the}%  <br />\capitalisewords{the wind in the willows} </div> -<!--l. 539--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 674--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />The Wind In The Willows <br />The Wind in the Willows <br /><spacer type=vertical size=10></span> The list of words that shouldn’t be capitalised can be cleared using -</p><!--l. 550--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +</p><!--l. 685--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span class="cmtt-9">\MFUclear</span><span class="cmtt-9"> </span></span><a id="dx1-6003"></a> <span class="cmtt-10">\MFUclear </span></div><hr> -</p><!--l. 552--><p class="noindent" > -</p><!--l. 554--><p class="indent" > You can also simply place an empty group in front of a word if you don’t want that specific +</p><!--l. 687--><p class="noindent" > +</p><!--l. 689--><p class="indent" > You can also simply place an empty group in front of a word if you don’t want that specific instance to be capitalised. For example: </p> - <div class="verbatim" id="verbatim-34"> + <div class="verbatim" id="verbatim-43"> \MFUclear  <br />\capitalisewords{the {}wind in the willows} </div> -<!--l. 560--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 695--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h"> <br />The wind In The Willows <br /><spacer type=vertical size=10></span> This is also a useful way of protecting commands that shouldn’t be parsed. For @@ -1008,16 +1182,17 @@ example: </p> - <div class="verbatim" id="verbatim-35"> + <div class="verbatim" id="verbatim-44"> \capitalisewords{this is section {}\nameref{sec:nocap}.} </div> -<!--l. 570--><p class="nopar" > produces <spacer type=vertical size=10><span class="obeylines-h"> +<!--l. 705--><p class="nopar" > produces <spacer type=vertical size=10><span class="obeylines-h"> <br />This Is Section <a href="#sec:nocap">Excluding Words From Case-Changing<!--tex4ht:ref: sec:nocap --></a>. <br /><spacer type=vertical size=10></span> (No case-changing is applied to <span class="obeylines-h"><span class="verb"><span -class="cmtt-10">\nameref{sec:nocap}</span></span></span>.) -</p><!--l. 577--><p class="indent" > The package <span +class="cmtt-10">\nameref{sec:nocap}</span></span></span>. It just happens to already be in title +case.) +</p><!--l. 713--><p class="indent" > The package <span class="cmss-10">mfirstuc-english</span><a id="dx1-6004"></a> loads <span class="cmss-10">mfirstuc </span>and uses <span @@ -1026,72 +1201,75 @@ English articles and conjunctions, such as “a”, “an”, &# to add other words to this list, such as prepositions but, as there’s some dispute over whether prepositions should be capitalised, I don’t intend to add them to this package. -</p><!--l. 584--><p class="indent" > If you want to write a similar package for another language, all you need to do is create a +</p><!--l. 720--><p class="indent" > If you want to write a similar package for another language, all you need to do is create a file with the extension <span class="cmtt-10">.sty </span>that starts with </p> - <div class="verbatim" id="verbatim-36"> + <div class="verbatim" id="verbatim-45"> \NeedsTeXFormat{LaTeX2e} </div> -<!--l. 589--><p class="nopar" > The next line should identify the package. For example, if you have called the file +<!--l. 725--><p class="nopar" > The next line should identify the package. For example, if you have called the file <span class="cmtt-10">mfirstuc-french.sty </span>then you need: </p> - <div class="verbatim" id="verbatim-37"> + <div class="verbatim" id="verbatim-46"> \ProvidesPackage{mfirstuc-french} </div> -<!--l. 594--><p class="nopar" > It’s a good idea to also add a version in the final optional argument, for example: +<!--l. 730--><p class="nopar" > It’s a good idea to also add a version in the final optional argument, for example: </p> - <div class="verbatim" id="verbatim-38"> + <div class="verbatim" id="verbatim-47"> \ProvidesPackage{mfirstuc-french}[2014/07/30 v1.0] </div> -<!--l. 599--><p class="nopar" > Next load <span +<!--l. 735--><p class="nopar" > Next load <span class="cmss-10">mfirstuc</span>: </p> - <div class="verbatim" id="verbatim-39"> + <div class="verbatim" id="verbatim-48"> \RequirePackage{mfirstuc} </div> -<!--l. 603--><p class="nopar" > Now add all your <span +<!--l. 739--><p class="nopar" > Now add all your <span class="cmtt-10">\MFUnocap </span>commands. For example: </p> - <div class="verbatim" id="verbatim-40"> + <div class="verbatim" id="verbatim-49"> \MFUnocap{de} </div> -<!--l. 607--><p class="nopar" > At the end of the file add: +<!--l. 743--><p class="nopar" > At the end of the file add: </p> - <div class="verbatim" id="verbatim-41"> + <div class="verbatim" id="verbatim-50"> \endinput </div> -<!--l. 611--><p class="nopar" > -</p><!--l. 613--><p class="indent" > Put the file somewhere on <span class="TEX">T<span +<!--l. 747--><p class="nopar" > +</p><!--l. 749--><p class="indent" > Put the file somewhere on <span class="TEX">T<span class="E">E</span>X</span>’s path, and now you can use this package in your document. You might also consider <a href="http://ctan.org/upload" >uploading it to CTAN</a> in case other users find it useful. -</p><!--l. 618--><p class="noindent" > + + + </p> -<!--l. 618--><p class="noindent" ><a -href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4 </span> <a - id="sec:utf8"></a>UTF-8</h3> -<!--l. 621--><p class="noindent" >The <span +<!--l. 754--><p class="indent" > </div> +</p><!--l. 754--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">4. <a + id="sec:utf8"></a>UTF-8</h2> +</p><!--l. 757--><p class="indent" > The <span class="cmtt-10">\makefirstuc </span>command works by utilizing the fact that, in most cases, <span class="TEX">T<span class="E">E</span>X</span> doesn’t require a regular argument to be enclosed in braces if it only consists of a single token. (This is @@ -1101,35 +1279,35 @@ class="cmtt-10">\frac{1}{2}</span></span></span> or <span class="obeylines-h"><s class="cmtt-10">x^2</span></span></span> instead of <span class="obeylines-h"><span class="verb"><span class="cmtt-10">x^{2}</span></span></span>, although some users frown on this practice.) -</p><!--l. 628--><p class="indent" > A simplistic version of the <span +</p><!--l. 764--><p class="indent" > A simplistic version of the <span class="cmtt-10">\makefirstuc </span>command is: </p> - <div class="verbatim" id="verbatim-42"> + <div class="verbatim" id="verbatim-51"> \newcommand*{\FirstUC}[1]{\MakeUppercase #1} </div> -<!--l. 631--><p class="nopar" > Here +<!--l. 767--><p class="nopar" > Here </p> - <div class="verbatim" id="verbatim-43"> + <div class="verbatim" id="verbatim-52"> \FirstUC{abc} </div> -<!--l. 635--><p class="nopar" > is equivalent to +<!--l. 771--><p class="nopar" > is equivalent to </p> - <div class="verbatim" id="verbatim-44"> + <div class="verbatim" id="verbatim-53"> \MakeUppercase abc </div> -<!--l. 639--><p class="nopar" > and since <span +<!--l. 775--><p class="nopar" > and since <span class="cmtt-10">\MakeUppercase </span>requires an argument, it grabs the first token (the character “a” in this case) and uses that as the argument so that the result is: Abc. -</p><!--l. 644--><p class="indent" > The <span +</p><!--l. 780--><p class="indent" > The <span class="cmss-10">glossaries</span><a id="dx1-7001"></a> package needs to take into account the fact that the text may be contained in the argument of a formatting command, such as <span @@ -1186,12 +1364,12 @@ class="cmtt-10">\foo{</span>⟨<span class="cmitt-10">stuff</span>⟩<span class="cmtt-10">}</span><span class="cmsy-10">}</span> +</div> +</div> +<!--l. 812--><p class="indent" > Try the following document: </p><div class="alltt"> -</div> -</div> -<!--l. 676--><p class="indent" > Try the following document: </p><div class="alltt"> <div class="obeylines-v"> <span class="cmtt-10">\documentclass</span><span @@ -1229,22 +1407,22 @@ class="cmtt-10">document</span><span class="cmsy-10">}</span> </div> </div> -<!--l. 690--><p class="indent" > This will result in the error: +<!--l. 826--><p class="indent" > This will result in the error: </p> - <div class="verbatim" id="verbatim-45"> + <div class="verbatim" id="verbatim-54"> ! Argument of \UTFviii@two@octets has an extra }. </div> -<!--l. 693--><p class="nopar" > This is why <span class="obeylines-h"><span class="verb"><span +<!--l. 829--><p class="nopar" > This is why <span class="obeylines-h"><span class="verb"><span class="cmtt-10">\makefirstuc{</span></span></span><span class="cmtt-10">ã</span><span class="cmtt-10">bc</span><span class="obeylines-h"><span class="verb"><span class="cmtt-10">}</span></span></span> won’t work. It will only work if the character <span class="cmtt-10">ã</span> is placed inside a group. -</p><!--l. 698--><p class="indent" > The reason for this error message is due to <span class="TEX">T<span +</p><!--l. 834--><p class="indent" > The reason for this error message is due to <span class="TEX">T<span class="E">E</span>X</span> having been written before Unicode was invented. Although <span class="cmtt-10">ã</span> may look like a single character in your text editor, from <span class="TEX">T<span @@ -1272,7 +1450,7 @@ class="cmsy-10">}</span><span class="cmtt-10">bc</span> </div> </div> -<!--l. 714--><p class="indent" > Note that XeTeX (and therefore XeLaTeX) is a modern implementation of <span class="TEX">T<span +<!--l. 850--><p class="indent" > Note that XeTeX (and therefore XeLaTeX) is a modern implementation of <span class="TEX">T<span class="E">E</span>X</span> designed to work with Unicode and therefore doesn’t suffer from this drawback. Now let’s look at the XeLaTeX equivalent of the above example: </p><div class="alltt"> @@ -1308,7 +1486,7 @@ class="cmtt-10">document</span><span class="cmsy-10">}</span> </div> </div> -<!--l. 730--><p class="indent" > This works correctly when compiled with XeLaTeX. This means that <span +<!--l. 866--><p class="indent" > This works correctly when compiled with XeLaTeX. This means that <span class="cmtt-10">\makefirstuc</span><span class="obeylines-h"><span class="verb"><span class="cmtt-10">{</span></span></span><span class="cmtt-10">ã</span><span @@ -1320,95 +1498,111 @@ class="cmti-10"> and the </span><span class="cmssi-10">fontspec</span><a id="dx1-7002"></a> <span class="cmti-10">package</span>. +</p><!--l. 870--><p class="indent" > Version 2.24 of <span +class="cmss-10">datatool-base</span><a + id="dx1-7003"></a> added the command <span +class="cmtt-10">\dtl@getfirst@UTFviii </span>which +attempts to grab both octets. If this command has been defined, <span +class="cmss-10">mfirstuc</span><a + id="dx1-7004"></a> will use it when it +tries to split the first character from the rest of the word. See the <a +href="http://mirrors.ctan.org/macros/latex/contrib/datatool/datatool-code.pdf" ><span +class="cmss-10">datatool </span>documented code</a> +for further details. -</p><!--l. 2--><p class="noindent" > </p> - <h3 class="likesectionHead"><a - id="x1-80004"></a>Index</h3> -<!--l. 4--><p class="noindent" > <span +<!--l. 2--><p class="indent" > </div> +</p><!--l. 2--><p class="noindent" ><a +href="#top">Top</a></p><h2 class="likechapterHead"><a + id="x1-80004"></a>Index</h2> <span class="cmbx-10">C</span> -</p> <div class="theindex"><span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\capitalisewords</span></span></span>  <span -class="cmti-10">5 </span><br /></span> +class="cmti-10">8 </span><br /></span> <p class="theindex"> <span +class="cmbx-10">D</span> +<span class="index-item"><span +class="cmss-10">datatool-base </span>package  6, 19 <br /></span> +</p><p class="theindex"> <span class="cmbx-10">E</span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\ecapitalisefmtwords</span></span></span>  <span -class="cmti-10">8 </span><br /></span> +class="cmti-10">12 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\ecapitalisewords</span></span></span>  <span -class="cmti-10">8 </span><br /></span> +class="cmti-10">12 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\emakefirstuc</span></span></span>  <span -class="cmti-10">4 </span><br /></span> +class="cmti-10">7 </span><br /></span> </p><p class="theindex"> <span class="cmbx-10">F</span> <span class="index-item"><span -class="cmss-10">fontspec </span>package  13 <br /></span> +class="cmss-10">fontspec </span>package  19 <br /></span> </p><p class="theindex"> <span class="cmbx-10">G</span> <span class="index-item"><span -class="cmss-10">glossaries </span>package  4, 12 <br /></span> +class="cmss-10">glossaries </span>package  6, 7, 17 <br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\glsmakefirstuc</span></span></span>  <span -class="cmti-10">4 </span><br /></span> +class="cmti-10">7 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\gMFUnocap</span></span></span>  <span -class="cmti-10">10 </span><br /></span> +class="cmti-10">15 </span><br /></span> </p><p class="theindex"> <span class="cmbx-10">H</span> <span class="index-item"><span -class="cmss-10">hyperref </span>package  9 <br /></span> +class="cmss-10">hyperref </span>package  14 <br /></span> </p><p class="theindex"> <span class="cmbx-10">I</span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\ifMFUhyphen</span></span></span>  <span -class="cmti-10">5 </span><br /></span> +class="cmti-10">8 </span><br /></span> <span class="index-item"><span -class="cmss-10">inputenc </span>package  3 <br /></span> +class="cmss-10">inputenc </span>package  6 <br /></span> </p><p class="theindex"> <span class="cmbx-10">M</span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\makefirstuc</span></span></span>  <span -class="cmti-10">2 </span><br /></span> +class="cmti-10">5 </span><br /></span> <span class="index-item"><span -class="cmss-10">mfirstuc-english </span>package  10 <br /></span> +class="cmss-10">mfirstuc </span>package  6, 19 <br /></span> +<span class="index-item"><span +class="cmss-10">mfirstuc-english </span>package  15 <br /></span> + + + <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\MFUcapword</span></span></span>  <span -class="cmti-10">5 </span><br /></span> +class="cmti-10">8 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\MFUclear</span></span></span>  <span -class="cmti-10">10 </span><br /></span> +class="cmti-10">15 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\MFUhyphenfalse</span></span></span>  <span -class="cmti-10">5 </span><br /></span> +class="cmti-10">8 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\MFUhyphentrue</span></span></span>  <span -class="cmti-10">5 </span><br /></span> +class="cmti-10">8 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\MFUnocap</span></span></span>  <span -class="cmti-10">9 </span><br /></span> +class="cmti-10">15 </span><br /></span> </p><p class="theindex"> <span class="cmbx-10">T</span> <span class="index-item"><span -class="cmss-10">textcase </span>package  4 <br /></span> +class="cmss-10">textcase </span>package  7 <br /></span> </p><p class="theindex"> <span class="cmbx-10">X</span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\xcapitalisefmtwords</span></span></span>  <span -class="cmti-10">8 </span><br /></span> - - - +class="cmti-10">12 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\xcapitalisewords</span></span></span>  <span -class="cmti-10">7 </span><br /></span> +class="cmti-10">12 </span><br /></span> <span class="index-item"><span class="obeylines-h"><span class="verb"><span class="cmtt-10">\xmakefirstuc</span></span></span>  <span -class="cmti-10">4 </span><br /></span> +class="cmti-10">7 </span><br /></span> </p></div> </body></html> diff --git a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdf b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdf Binary files differindex 96f70aad756..02bb0409344 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdf +++ b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdf diff --git a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.tex b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.tex index 26c3ce9149d..caaceb756ce 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.tex +++ b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.tex @@ -1,4 +1,4 @@ -\documentclass{nlctdoc} +\documentclass[report]{nlctdoc} \usepackage[a4paper,left=1.75in]{geometry} \usepackage{alltt} @@ -21,22 +21,22 @@ pdfkeywords={LaTeX,package,uppercase}]{hyperref} \IndexPrologue{% -\section*{\indexname}\markright{\indexname} -\addcontentsline{toc}{section}{\indexname}} +\chapter*{\indexname}\markright{\indexname} +\addcontentsline{toc}{chapter}{\indexname}} \begin{document} \MakeShortVerb{|} - \title{mfirstuc.sty v2.03: + \title{mfirstuc.sty v2.04: uppercasing first letter} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} - \date{2016-07-29} + \date{2016-07-31} \maketitle \tableofcontents - \section{Introduction} + \chapter{Introduction} \label{sec:intro} The \styfmt{mfirstuc} package was originally part of the @@ -99,7 +99,7 @@ any of the commands that fully expand their argument (\cs{emakefirstuc}, \cs{ecapitalisewords} and \cs{ecapitalisefmtwords}). -\section{Capitalising the First Letter of a Word} +\chapter{Capitalising the First Letter of a Word} \label{sec:makefirstuc} A simple word can be capitalised just using the standard \LaTeX\ @@ -158,11 +158,36 @@ therefore first object is |\em| and so is equivalent to \item |\makefirstuc{{ä}bc}| produces \makefirstuc{{ä}bc}. \end{itemize} + Note that non-Latin or accented characters appearing at the -start of the text must be placed in a group (even if you are +start of the text should be placed in a group (even if you are using the \sty{inputenc} package). The reason for this restriction is detailed in \sectionref{sec:utf8}. +\textbf{New to version 2.04:} There is now limited support for +UTF-8 characters with the \sty{inputenc} package, provided that +you load \sty{datatool-base} (at least v2.24) before +\styfmt{mfirstuc} (\sty{datatool-base} is loaded automatically with newer versions +of \sty{glossaries}). If available +\sty{mfirstuc} will now use \sty{datatool-base}'s +\ics{dtl@getfirst@UTFviii} command which is still experimental. +See the \styfmt{datatool} manual for further details. + +\begin{verbatim} +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} + +\usepackage{datatool-base}[2016/01/12]% v2.24+ +\usepackage{mfirstuc} + +\begin{document} +\makefirstuc{élite} +\end{document} +\end{verbatim} +(Package ordering is important.) + \begin{important} In version 1.02 of \styfmt{mfirstuc}, a bug fix resulted in a change in output if the first object is a control sequence followed by @@ -239,7 +264,7 @@ For example: Remember to also load \sty{textcase} (\styfmt{glossaries} loads this automatically). -\section{Capitalise the First Letter of Each Word in a Phrase or Sentence (Title Case)} +\chapter{Capitalise the First Letter of Each Word in a Phrase or Sentence (Title Case)} \label{sec:capitalisewords} New to mfirstuc v1.06: @@ -326,6 +351,17 @@ or contain formatted sub-phrases \end{alltt} Avoid scoped declarations. +\begin{important} +\cs{capitalisefmtwords} is only designed for phrases that contain +text-block commands with a single +argument, which should be a word or sub-phrase. Anything +more complicated is likely to break. Instead, use the +starred form or \cs{capitalisewords}. +\end{important} + +The starred form only permits a text-block command at the +start of the phrase. + Examples: \begin{enumerate} \item Phrase entirely enclosed in a formatting command: @@ -366,8 +402,60 @@ produces: \MFUnocap{of} \capitalisefmtwords{\textbf{a \emph{small book}} of rhyme} \end{display} + +\item Starred form: +\begin{verbatim} +\MFUnocap{of} +\capitalisefmtwords*{\emph{a small book of rhyme}} +\end{verbatim} +produces: +\begin{display} +\MFUnocap{of} +\capitalisefmtwords*{\emph{a small book of rhyme}} +\end{display} + +\item The starred form also works with just text (no text-block +command): +\begin{verbatim} +\MFUnocap{of} +\capitalisefmtwords*{a small book of rhyme} +\end{verbatim} +produces: +\begin{display} +\MFUnocap{of} +\capitalisefmtwords*{a small book of rhyme} +\end{display} + \end{enumerate} +If there is a text-block command within the argument of the +starred form, it's assumed to be at the start of the argument. +Unexpected results can occur if there are other commands. +For example +\begin{verbatim} +\MFUnocap{of} +\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}} +\end{verbatim} +produces: +\begin{display} +\MFUnocap{of} +\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}} +\end{display} +(In this case \verb|\textbf{of rhyme}| is considered a +single word.) Similarly if the text-block command occurs +in the middle of the argument: +\begin{verbatim} +\MFUnocap{of} +\capitalisefmtwords*{a \emph{very small} book of rhyme} +\end{verbatim} +produces: +\begin{display} +\MFUnocap{of} +\capitalisefmtwords*{a \emph{very small} book of rhyme} +\end{display} +(In this case \verb|\emph{very small}| is considered a +single word.) + Grouping causes interference: \begin{verbatim} \capitalisefmtwords{{a \emph{small book}} of rhyme} @@ -386,6 +474,29 @@ produces: \capitalisefmtwords{{\bfseries a \emph{small book}} of rhyme} \end{display} +Avoid complicated commands in the unstarred version. For example, +the following breaks: +\begin{verbatim} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisefmtwords{a \swap{bo}{ok} of rhyme} +\end{verbatim} +However it works okay with the starred form and the simpler +\cs{capitalisewords}: +\begin{verbatim} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisefmtwords*{a \swap{bo}{ok} of rhyme} + +\capitalisewords{a \swap{bo}{ok} of rhyme} +\end{verbatim} +Produces: +\begin{display} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisefmtwords*{a \swap{bo}{ok} of rhyme} + +\capitalisewords{a \swap{bo}{ok} of rhyme} +\end{display} +Note that the case change is applied to the first argument. + \begin{definition}[\DescribeMacro{\xcapitalisewords}] \cs{xcapitalisewords}\marg{text} \end{definition} @@ -399,12 +510,14 @@ entire argument before applying \cs{capitalisewords}: \end{definition} There are also similar shortcut commands for the version that allows -formatting commands: +text-block commands: \begin{definition}[\DescribeMacro{\xcapitalisefmtwords}] \cs{xcapitalisefmtwords}\marg{text} \end{definition} -This is a short cut for +The unstarred version is a short cut for \cs{expandafter}\cs{capitalisefmtwords}\cs{expandafter}\marg{text}. +Similarly the starred version of \cs{xcapitalisefmtwords} +uses the starred version of \cs{capitalisefmtwords}. For full expansion: \begin{definition}[\DescribeMacro\ecapitalisefmtwords] @@ -413,7 +526,8 @@ For full expansion: Take care with this as it may expand non-robust semantic commands to replacement text that breaks the functioning of \cs{capitalisefmtwords}. Use robust semantic commands -where possible. +where possible. Again this has a starred version that uses +the starred form of \cs{capitalisefmtwords}. Examples: \begin{verbatim} @@ -478,10 +592,31 @@ However \end{verbatim} produces: \ecapitalisewords{\mytitle} +(\cs{space} has been expanded to an actual space character.) + +\item +\begin{verbatim} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisewords{a \swap{bo}{ok} of rhyme} +\ecapitalisewords{a \swap{bo}{ok} of rhyme} +\end{verbatim} +produces: +\begin{display} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisewords{a \swap{bo}{ok} of rhyme} + +\ecapitalisewords{a \swap{bo}{ok} of rhyme} +\end{display} +This is because the argument of \cs{ecapitalisewords} is +fully expanded before being passed to \cs{capitalisewords} so +that last example is equivalent to: +\begin{verbatim} +\capitalisewords{a {ok}{bo} of rhyme} +\end{verbatim} \end{enumerate} -\subsection{PDF Bookmarks} +\section{PDF Bookmarks} \label{sec:pdfbookmarks} \begin{important} @@ -515,7 +650,7 @@ disabling commands within the bookmarks. For example: See the \sty{hyperref} manual for further details. -\subsection{Excluding Words From Case-Changing} +\section{Excluding Words From Case-Changing} \label{sec:nocap} As from v1.09, you can specify words which shouldn't be capitalised unless they @@ -572,7 +707,8 @@ produces \begin{display} \capitalisewords{this is section {}\nameref{sec:nocap}.} \end{display} -(No case-changing is applied to \verb|\nameref{sec:nocap}|.) +(No case-changing is applied to \verb|\nameref{sec:nocap}|. +It just happens to already be in title case.) The package \sty{mfirstuc-english} loads \styfmt{mfirstuc} and uses \cs{MFUnocap} to add common English articles and conjunctions, such @@ -615,7 +751,7 @@ package in your document. You might also consider \href{http://ctan.org/upload}{uploading it to CTAN} in case other users find it useful. -\section{UTF-8} +\chapter{UTF-8} \label{sec:utf8} The \cs{makefirstuc} command works by utilizing the fact that, in @@ -731,5 +867,12 @@ This works correctly when compiled with \XeLaTeX. This means that \cs{makefirstuc}\verb|{|\texttt{\~abc}\verb|}| will work \emph{provided you use \XeLaTeX\ and the \sty{fontspec} package}. +Version 2.24 of \sty{datatool-base} added the +command \cs{dtl@getfirst@UTFviii} which attempts to grab both octets. If this command +has been defined, \sty{mfirstuc} will use it when it tries to split +the first character from the rest of the word. See the +\href{http://mirrors.ctan.org/macros/latex/contrib/datatool/datatool-code.pdf}{\styfmt{datatool} +documented code} for further details. + \PrintIndex \end{document} diff --git a/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdf b/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdf Binary files differindex 0468a09a98b..e39ab58cc34 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdf +++ b/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdf diff --git a/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.tex b/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.tex index eb1104be59a..718515cb8f6 100644 --- a/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.tex +++ b/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.tex @@ -1,14 +1,21 @@ % This file is public domain % If you want to use arara, you need the following directive: % arara: pdflatex: { synctex: on } + % arara: pdflatex: { synctex: on } \documentclass{article} \usepackage[a4paper]{geometry} \usepackage{color} \usepackage{mfirstuc-english}% also loads mfirstuc.sty +\usepackage[hidelinks]{hyperref} + +\title{Sample Document Illustrating the mfirstuc Package} +\author{Nicola Talbot} \begin{document} -This is a sample document illustrating the mfirstuc package. +\maketitle + +\tableofcontents \section{First Letter Upper Case} @@ -37,23 +44,77 @@ Protected formatting: \xmakefirstuc{\mytext}. \renewcommand*{\mytext}{\ae\oe{some text}} Sequential commands: \xmakefirstuc{\mytext}. -\section{Title Case (Formatting)} +\section{Title Case (No Formatting Commands)} + +\bgroup + +\verb|\capitalisewords{the wind in the willows}| +\capitalisewords{the wind in the willows} + +\verb|\capitalisewords{a small book of rhyme.}| +\capitalisewords{a small book of rhyme.} + +\medskip + +\verb|\space| isn't considered a word boundary for +\verb|\capitalisewords| as shown below: + +\begin{verbatim} +\capitalisewords{a small\space book of rhyme.} +\end{verbatim} +\capitalisewords{a small\space book of rhyme.} + +\medskip +No expansion is performed on the argument of +\verb|\capitalisewords|: + +\verb|\newcommand{\mytitle}{a small book of rhyme.}| +\newcommand{\mytitle}{a small book of rhyme.} + +\verb|\capitalisewords{\mytitle}| +\capitalisewords{\mytitle} + +\verb|\xcapitalisewords{\mytitle}| +\xcapitalisewords{\mytitle} + +\egroup Formatting for the entire phrase must go outside \verb|\capitalisewords| (unlike \verb|\makefirstuc|). Compare: -\verb|\capitalisewords{\textbf{a small book of rhyme.}}| +\begin{verbatim} +\capitalisewords{\textbf{a small book of rhyme.}} +\end{verbatim} \capitalisewords{\textbf{a small book of rhyme.}} -with: - -\verb|\textbf{\capitalisewords{a small book of rhyme.}}| +\begin{verbatim} +\textbf{\capitalisewords{a small book of rhyme.}} +\end{verbatim} \textbf{\capitalisewords{a small book of rhyme.}} \medskip -Use \verb|\capitalisefmtwords| instead (full stop outside -argument to check for spurious spaces): +Use \verb|\capitalisefmtwords| instead. The starred form +is limited to one text-block command at the start of the argument. + +\begin{verbatim} +\capitalisefmtwords*{\emph{a small book of rhyme}} +\end{verbatim} +\capitalisefmtwords*{\emph{a small book of rhyme}} + +Additional text-block commands can cause unexpected results. + +\begin{verbatim} +\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}} +\end{verbatim} +\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}} + +\section{Title Case (Contains Text-Block Formatting Commands)} + +The unstarred form of \verb|\capitalisefmtwords| is still a bit +experimental and is only designed +for phrases that contain text-block commands with a single +argument, which should be a word or sub-phrase. \verb|\capitalisefmtwords{\textbf{a small book of rhyme}}.| \capitalisefmtwords{\textbf{a small book of rhyme}}. @@ -64,17 +125,28 @@ argument to check for spurious spaces): \verb|\capitalisefmtwords{a \textbf{small book} of rhyme}.| \capitalisefmtwords{a \textbf{small book} of rhyme}. -\verb|\capitalisefmtwords{\textbf{a} book of rhyme}.| +\verb|\capitalisefmtwords{\textbf{a} small book of rhyme}.| \capitalisefmtwords{\textbf{a} small book of rhyme}. -\verb|\capitalisefmtwords{\textbf{a book }of rhyme}.| -\capitalisefmtwords{\textbf{a small book }of rhyme}. - \verb|\capitalisefmtwords{a small book \textbf{of rhyme}}.| \capitalisefmtwords{a small book \textbf{of rhyme}}. \medskip +Be careful of trailing spaces at the end a group. They can confuse +things. + +\verb|\capitalisefmtwords{\textbf{a small }book of rhyme}.| +\capitalisefmtwords{\textbf{a small }book of rhyme}. + +\verb|\capitalisefmtwords{\textbf{a small book }of rhyme}.| +\capitalisefmtwords{\textbf{a small book }of rhyme}. + +\verb|\capitalisefmtwords{\textbf{a small book of }rhyme}.| +\capitalisefmtwords{\textbf{a small book of }rhyme}. + +\medskip + Use semantic commands for things like quotations: \begin{verbatim} @@ -88,6 +160,25 @@ Use semantic commands for things like quotations: (But make them robust if you intend using commands like \verb|\ecapitalisefmtwords|.) +Similarly for other types of punctuation: +\begin{verbatim} +\newcommand*{\esq}[1]{'?#1?} +\capitalisefmtwords{\esq{D\'onde est\'a libro}} +\end{verbatim} +\newcommand*{\esq}[1]{?`#1?} +\capitalisefmtwords{\esq{D\'onde est\'a libro}} + +\medskip + +Anything more complicated than a simple one-argument text-block +command requires the starred version. + +\begin{verbatim} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisefmtwords*{\textbf{an \swap{un}{usually} small book of} rhyme}. +\end{verbatim} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisefmtwords*{\textbf{an \swap{un}{usually} small book of} rhyme}. \medskip @@ -168,38 +259,27 @@ As illustrated next: \verb|\capitalisefmtwords{\relax a book of rhyme.}| \capitalisefmtwords{\relax a book of rhyme.} -\section{Title Case (No Formatting)} - -\bgroup +\section{Compound Words} -\verb|\capitalisewords{the wind in the willows}| -\capitalisewords{the wind in the willows} - -\verb|\capitalisewords{a small book of rhyme.}| -\capitalisewords{a small book of rhyme.} - -\medskip - -\verb|\space| isn't considered a word boundary for -\verb|\capitalisewords| as shown below: +Use \verb|\MFUhyphentrue| to title case each part of +a compound word. +Default: \begin{verbatim} -\capitalisewords{a small\space book of rhyme.} +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. \end{verbatim} -\capitalisewords{a small\space book of rhyme.} +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. -\medskip -No expansion is performed on the argument of -\verb|\capitalisewords|: - -\verb|\newcommand{\mytitle}{a small\space book of rhyme.}| -\newcommand{\mytitle}{a small\space book of rhyme.} - -\verb|\capitalisewords{\mytitle}| -\capitalisewords{\mytitle} - -\verb|\xcapitalisewords{\mytitle}| -\xcapitalisewords{\mytitle} +Compare with +\begin{verbatim} +\MFUhyphentrue +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. +\end{verbatim} +\MFUhyphentrue +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. -\egroup \end{document} diff --git a/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.dtx b/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.dtx index 3f3887401ad..2c7299fba08 100644 --- a/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.dtx +++ b/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.dtx @@ -1,21 +1,21 @@ %\iffalse % mfirstuc.dtx generated using makedtx version 1.1 (c) Nicola Talbot % Command line args: +% -doc "mfirstuc-codedoc.tex" +% -macrocode ".*\.perl" +% -macrocode ".*\.tex" % -codetitle "Main Package Code" +% -comment ".*\.perl" +% -comment ".*\.tex" +% -setambles ".*\.perl=>\nopreamble\nopostamble" +% -setambles ".*\.tex=>\nopreamble\nopostamble" % -author "Nicola Talbot" -% -doc "mfirstuc-codedoc.tex" % -src "mfirstuc.sty\Z=>mfirstuc.sty" % -src "mfirstuc-english.sty\Z=>mfirstuc-english.sty" % -src "(sample.*\.tex)\Z=>\1" % -src "(.*\.perl)\Z=>\1" -% -comment ".*\.perl" -% -comment ".*\.tex" -% -macrocode ".*\.perl" -% -macrocode ".*\.tex" -% -setambles ".*\.perl=>\nopreamble\nopostamble" -% -setambles ".*\.tex=>\nopreamble\nopostamble" % mfirstuc -% Created on 2016/7/29 22:54 +% Created on 2016/7/31 20:20 %\fi %\iffalse %<*package> @@ -64,7 +64,7 @@ mfirstuc.dtx \setcounter{IndexColumns}{2} \setlength\IndexMin{100pt} -\CheckSum{519} +\CheckSum{664} \begin{document} \DocInput{mfirstuc.dtx} @@ -74,12 +74,12 @@ mfirstuc.dtx %\MakeShortVerb{"} %\DeleteShortVerb{\|} % -% \title{Documented Code For mfirstuc v2.03} +% \title{Documented Code For mfirstuc v2.04} % \author{Nicola L.C. Talbot\\[10pt] %Dickimaw Books\\ %\url{http://www.dickimaw-books.com/}} % -% \date{2016-07-29} +% \date{2016-07-31} % \maketitle % %\tableofcontents @@ -111,7 +111,7 @@ mfirstuc.dtx %\changes{2.0}{2015/09/09}{package split from glossaries} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{mfirstuc}[2016/07/29 v2.03 (NLCT)] +\ProvidesPackage{mfirstuc}[2016/07/31 v2.04 (NLCT)] % \end{macrocode} % Requires \sty{etoolbox}:\changes{1.06}{2012/05/21}{now requires % etoolbox} @@ -226,7 +226,7 @@ mfirstuc.dtx %\begin{macro}{\@gls@split} % Put first argument in \cs{@gls@first} and second argument in % \cs{@gls@rest}: -%\changes{??}{??}{added check for datatool-base UTF-8 support} +%\changes{2.03}{2016-07-29}{added check for datatool-base UTF-8 support} % \begin{macrocode} \ifdef\dtl@getfirst@UTFviii {% @@ -243,6 +243,12 @@ mfirstuc.dtx \def\@gls@first{#1}\def\@gls@rest{#2}% }% }% + {% +% \end{macrocode} +%\changes{2.04}{2016-07-31}{added missing false part} +% \begin{macrocode} + \def\@gls@first{#1}\def\@gls@rest{#2}% + }% } }% {% @@ -265,7 +271,7 @@ mfirstuc.dtx % Has \sty{datatool-base} v2.24 (or above) been loaded? If so and we % have UTF-8 enabled, we can grab the first octet. %\begin{macro}{\@mfu@applytofirst} -%\changes{??}{??}{new} +%\changes{2.03}{2016-07-29}{new} % \begin{macrocode} \ifdef\dtl@getfirst@UTFviii {% @@ -287,7 +293,7 @@ mfirstuc.dtx %\end{macro} % %\begin{macro}{\MFUapplytofirst} -%\changes{??}{??}{new} +%\changes{2.03}{2016-07-29}{new} %\begin{definition} %\cs{MFUapplytofirst}\marg{cs}\marg{text} %\end{definition} @@ -478,12 +484,24 @@ mfirstuc.dtx %\changes{2.02}{2015-12-17}{new} % \begin{macrocode} \newcommand*{\mfu@checkword@do}[1]{% - \ifdefstring{\mfu@checkword@arg}{#1}% - {% - \let\@mfu@domakefirstuc\@firstofone - \listbreak - }% - {}% + \def\mfu@checkword@argii{#1}% + \ifdefequal\mfu@checkword@arg\mfu@checkword@argii + {% + \let\@mfu@domakefirstuc\@firstofone + \listbreak + }% + {% +% \end{macrocode} +%Need to check if \cs{@mfu@terminator} has been tacked onto the end. +% \begin{macrocode} + \def\mfu@checkword@argii{#1{\@mfu@terminator}}% + \ifdefequal\mfu@checkword@arg\mfu@checkword@argii + {% + \let\@mfu@domakefirstuc\@firstofone + \listbreak + }% + {}% + }% } % \end{macrocode} %\end{macro} @@ -498,6 +516,7 @@ mfirstuc.dtx % %\begin{macro}{\MFUnocap} % Provide the user with a means to add a word to the list. +% (No expansion performed on the argument.) % \begin{macrocode} \newcommand*{\MFUnocap}[1]{\listadd{\@mfu@nocaplist}{#1}} % \end{macrocode} @@ -539,31 +558,167 @@ mfirstuc.dtx % \end{macrocode} %\end{macro} % +%\begin{macro}{\@mfu@nil} +% \begin{macrocode} +\newcommand\@mfu@nil{\unskip} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mfu@nnil} +% \begin{macrocode} +\newcommand*\@mfu@nnil{\@mfu@nil} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\capitalisefmtwords} %\changes{2.03}{2016-07-29}{new} %Like \cs{capitalisewords} but assumes that the phrase contains %formatting text-block commands. % \begin{macrocode} -\newcommand*{\capitalisefmtwords}[1]{% +\newcommand*{\capitalisefmtwords}{% + \@ifstar\@s@capitalisefmtwords\@ns@capitalisefmtwords +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@s@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% Starred form. +% \begin{macrocode} +\newcommand*{\@s@capitalisefmtwords}[1]{% + \@@s@checkgrp@@capitalisefmtwords#1\@nil +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@s@checkgrp@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% \begin{macrocode} +\newcommand*{\@@s@checkgrp@@capitalisefmtwords}{% + \@ifnextchar\bgroup{\@@s@nocs@capitalisefmtwords}{\@@s@capitalisefmtwords}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@s@nocs@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +%Argument starts with a group. +% \begin{macrocode} +\def\@@s@nocs@capitalisefmtwords#1\@nil{% + \capitalisewords{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@s@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% \begin{macrocode} +\newcommand*{\@@s@capitalisefmtwords}[1]{% + \def\gls@argi{#1}% + \ifx\gls@argi\@MFU@protect +% \end{macrocode} +%Skip \cs{protect} +% \begin{macrocode} + \let\@mfu@capfmtwordsnext\@@s@capitalisefmtwords + \else + \ifx\gls@argi\@nnil +% \end{macrocode} +%Nothing to do. +% \begin{macrocode} + \let\@mfu@capfmtwordsnext\relax + \else + \def\@gls@tmp{\ #1}% + \@onelevel@sanitize\@gls@tmp + \expandafter\@gls@checkcs\@gls@tmp\relax\relax + \if@glscs + \def\@mfu@capfmtwordsnext{\@@s@cs@capitalisefmtwords#1}% + \else + \def\@mfu@capfmtwordsnext{\@@s@nocs@capitalisefmtwords#1}% + \fi + \fi + \fi + \@mfu@capfmtwordsnext +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@s@cs@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% \begin{macrocode} +\newcommand*{\@@s@cs@capitalisefmtwords}[1]{% + \@ifnextchar\bgroup + {\@@s@cs@g@capitalisefmtwords#1}% + {\@@s@cs@ng@capitalisefmtwords#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@s@cs@g@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% \begin{macrocode} +\def\@@s@cs@g@capitalisefmtwords#1#2#3\@nil{% + #1{\capitalisewords{#2}}% + \ifblank{#3}% + {}% + {% + \def\gls@add@space{}% + \let\@mfu@checkword\mfu@checkword + \mfu@capitalisewords#3 \@nil\mfu@endcap + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@s@cs@ng@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% \begin{macrocode} +\def\@@s@cs@ng@capitalisefmtwords#1#2\@nil{% + \capitalisewords{#1#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ns@capitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% Unstarred form. +% \begin{macrocode} +\newcommand*{\@ns@capitalisefmtwords}[1]{% \let\@mfu@checkword\@gobble \def\gls@add@space{}% - \@capitalisefmtwords#1 \@nil\relax + \@capitalisefmtwords#1 \@mfu@nil{} \unskip } % \end{macrocode} %\end{macro} %\begin{macro}{\@capitalisefmtwords} %\changes{2.03}{2016-07-29}{new} +%Take care of group at the start of the word. % \begin{macrocode} -\def\@capitalisefmtwords#1 #2{% - \def\gls@argi{#2}% - \ifx\gls@argi\@nnil - \def\@mfu@capfmtwordsnext{\@capitalise@fmtwords#1\@nil}% +\newcommand*{\@capitalisefmtwords}{% + \@ifnextchar\bgroup{\@capitalise@g@fmtwords}{\@capitalise@ng@fmtwords}% +} +\newcommand*{\@capitalise@g@fmtwords}[1]{% + \@capitalise@ng@fmtwords{{#1}}% +} +\def\@mfu@ifnil#1#2\@mfu@end@nil#3#4{% + \def\gls@argi{#1}% + \ifx\gls@argi\@mfu@nnil + #3% \else - \def\@mfu@capfmtwordsnext{\@capitalise@fmtwords#1\@nil - \def\gls@add@space{ }% - \let\@mfu@checkword\mfu@checkword - \@@cap@nofmtphrase#2}% + #4% \fi +} +\def\@capitalise@ng@fmtwords#1 {% + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {% + \def\@mfu@capfmtwordsnext{#1}% + }% + {% + \def\@mfu@capfmtwordsnext{% + \@capitalise@fmtwords#1\@mfu@nil + \def\gls@add@space{ }% + \let\@mfu@checkword\mfu@checkword + \@@cap@nofmtphrase}% + }% \@mfu@capfmtwordsnext }% % \end{macrocode} @@ -572,13 +727,15 @@ mfirstuc.dtx %\changes{2.03}{2016-07-29}{new} % \begin{macrocode} \def\@capitalise@fmtwords#1{% - \def\gls@argi{#1}% - \ifx\gls@argi\@nnil + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {% % \end{macrocode} %Do nothing. % \begin{macrocode} - \let\@mfu@capfmtwordsnext\relax - \else + \def\@mfu@capfmtwordsnext{#1}% + }% + {% + \def\gls@argi{#1}% \ifx\gls@argi\@MFU@protect % \end{macrocode} %Skip \cs{protect} @@ -598,75 +755,91 @@ mfirstuc.dtx \fi \fi \fi - \fi + }% \@mfu@capfmtwordsnext } % \end{macrocode} %\end{macro} % -%\begin{macro}{\@capitalisefmtwords} +%\begin{macro}{\@@capitalisefmtwords} %\changes{2.03}{2016-07-29}{new} %Check for a group following argument. % \begin{macrocode} \def\@@capitalisefmtwords#1{% - \@ifnextchar\bgroup{\@@capfmtphrase#1}{\@@capnofmtphrase#1}% + \@ifnextchar\bgroup{\@@capfmtsubphrase#1}{\@@capnofmtphrase#1}% } % \end{macrocode} %\end{macro} % -%\begin{macro}{\@@capfmtphrase} +%\begin{macro}{\@@capnofmtphrase} %\changes{2.03}{2016-07-29}{new} % \begin{macrocode} -\def\@@capfmtphrase#1#2#3{% - \def\@gls@tmp{#3}% - \ifx\@gls@tmp\@nnil - \def\@mfu@capfmtwordsnext{#1{\@capitalisefmtwords#2 \@nil}}% - \else - \def\@mfu@capfmtwordsnext{\@@capfmtsubphrase#1{#2}#3}% - \fi - \@mfu@capfmtwordsnext +\def\@@capnofmtphrase{% + \@ifnextchar\bgroup{\@@cap@g@nofmtphrase}{\@@cap@ng@nofmtphrase}% } % \end{macrocode} %\end{macro} -% -%\begin{macro}{\@@capnofmtphrase} -%\changes{2.03}{2016-07-29}{new} +%\begin{macro}{\@@cap@ng@nofmtphrase} +%\changes{2.04}{2016-07-31}{new} % \begin{macrocode} -\def\@@capnofmtphrase#1\@nil{% +\def\@@cap@ng@nofmtphrase#1\@mfu@nil{% \gls@add@space \@mfu@mid@capitalisewords{#1}% \def\gls@add@space{ }% } % \end{macrocode} %\end{macro} +%\begin{macro}{\@@cap@g@nofmtphrase} +%\changes{2.04}{2016-07-31}{new} +% \begin{macrocode} +\def\@@cap@g@nofmtphrase#1{% + \@@cap@ng@nofmtphrase{{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mfu@terminator} +%\changes{2.04}{2016-07-31}{new} +% \begin{macrocode} +\newcommand*\@mfu@terminator{\hbox{}} +% \end{macrocode} +%\end{macro} % %\begin{macro}{\@@capfmtsubphrase} %\changes{2.03}{2016-07-29}{new} % \begin{macrocode} -\def\@@capfmtsubphrase#1#2#3\@nil{% - \gls@add@space - #1{\@mfu@mid@capitalisewords{#2}}% +\def\@@capfmtsubphrase#1#2#3{% +% \end{macrocode} +%Protect any trailing space at the end of the second argument. +% \begin{macrocode} + #1{\@capitalisefmtwords#2{\@mfu@terminator} \@mfu@nil{} \unskip}% \def\gls@add@space{ }% \let\@mfu@checkword\mfu@checkword - #3% + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {\let\@mfu@fmtsubphrasenext\relax}% + {\def\@mfu@fmtsubphrasenext{#3}}% + \@mfu@fmtsubphrasenext } % \end{macrocode} %\end{macro} % -% %\begin{macro}{\@@cap@nofmtphrase} %\changes{2.03}{2016-07-29}{new} % \begin{macrocode} -\def\@@cap@nofmtphrase#1 #2\@nil{% - \def\gls@arg{#2}% - \ifx\gls@arg\@empty - \@capitalisefmtwords#1 \@nil - \else - \@capitalisefmtwords#1 \@nil - \def\gls@add@space{ }% - \let\@mfu@checkword\mfu@checkword - \@capitalisefmtwords#2 \@nil - \fi +\def\@@cap@nofmtphrase#1 {% + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {% + \def\@mfu@capnofmtwordsnext{#1 }% + }% + {% + \def\@mfu@capnofmtwordsnext{% + \@capitalisefmtwords#1 \@mfu@nil{} \unskip + \def\gls@add@space{ }% + \let\@mfu@checkword\mfu@checkword + \@capitalisefmtwords + }% + }% + \@mfu@capnofmtwordsnext } % \end{macrocode} %\end{macro} @@ -675,8 +848,27 @@ mfirstuc.dtx %\changes{2.03}{2016-07-29}{new} % Short-cut command: % \begin{macrocode} -\newcommand*{\xcapitalisefmtwords}[1]{% - \expandafter\capitalisefmtwords\expandafter{#1}% +\newcommand*{\xcapitalisefmtwords}{% + \@ifstar\@s@xcapitalisefmtwords\@ns@xcapitalisefmtwords +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@s@xcapitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% Starred version +% \begin{macrocode} +\newcommand*{\@s@xcapitalisefmtwords}[1]{% + \expandafter\@s@capitalisefmtwords\expandafter{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ns@xcapitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +% Unstarred version +% \begin{macrocode} +\newcommand*{\@ns@xcapitalisefmtwords}[1]{% + \expandafter\@ns@capitalisefmtwords\expandafter{#1}% } % \end{macrocode} %\end{macro} @@ -684,13 +876,32 @@ mfirstuc.dtx %\begin{macro}{\ecapitalisefmtwords} %\changes{2.03}{2016-07-29}{new} % \begin{macrocode} -\newrobustcmd*{\ecapitalisefmtwords}[1]{% +\newrobustcmd*{\ecapitalisefmtwords}{% + \@ifstar\@s@ecapitalisefmtwords\@ns@ecapitalisefmtwords +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@s@ecapitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +%Starred version +% \begin{macrocode} +\newcommand*{\@s@ecapitalisefmtwords}[1]{% \protected@edef\@MFU@caparg{#1}% - \expandafter\capitalisefmtwords\expandafter{\@MFU@caparg}% + \expandafter\@s@capitalisefmtwords\expandafter{\@MFU@caparg}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\@ns@ecapitalisefmtwords} +%\changes{2.04}{2016-07-31}{new} +%Unstarred version +% \begin{macrocode} +\newcommand*{\@ns@ecapitalisefmtwords}[1]{% + \protected@edef\@MFU@caparg{#1}% + \expandafter\@ns@capitalisefmtwords\expandafter{\@MFU@caparg}% +} +% \end{macrocode} +%\end{macro} %\iffalse % \begin{macrocode} %</mfirstuc.sty> @@ -705,7 +916,7 @@ mfirstuc.dtx %\label{sec:code:mfirstuc-english} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{mfirstuc-english}[2016/07/29 v2.03 (NLCT)] +\ProvidesPackage{mfirstuc-english}[2016/07/31 v2.04 (NLCT)] % \end{macrocode} % Load \sty{mfirstuc} if not already loaded: % \begin{macrocode} @@ -746,14 +957,21 @@ mfirstuc.dtx % This file is public domain % If you want to use arara, you need the following directive: % arara: pdflatex: { synctex: on } + % arara: pdflatex: { synctex: on } \documentclass{article} \usepackage[a4paper]{geometry} \usepackage{color} \usepackage{mfirstuc-english}% also loads mfirstuc.sty +\usepackage[hidelinks]{hyperref} + +\title{Sample Document Illustrating the mfirstuc Package} +\author{Nicola Talbot} \begin{document} -This is a sample document illustrating the mfirstuc package. +\maketitle + +\tableofcontents \section{First Letter Upper Case} @@ -785,23 +1003,82 @@ Protected formatting: \xmakefirstuc{\mytext}. \renewcommand*{\mytext}{\ae\oe{some text}} Sequential commands: \xmakefirstuc{\mytext}. -\section{Title Case (Formatting)} +\section{Title Case (No Formatting Commands)} + +\bgroup +%Clearing ``nocap'' words. +%\verb|\MFUclear| +%\MFUclear +%(localised by group) + +\verb|\capitalisewords{the wind in the willows}| +\capitalisewords{the wind in the willows} + +\verb|\capitalisewords{a small book of rhyme.}| +\capitalisewords{a small book of rhyme.} + +\medskip + +\verb|\space| isn't considered a word boundary for +\verb|\capitalisewords| as shown below: + +\begin{verbatim} +\capitalisewords{a small\space book of rhyme.} +\end{verbatim} +\capitalisewords{a small\space book of rhyme.} + +\medskip +No expansion is performed on the argument of +\verb|\capitalisewords|: + +\verb|\newcommand{\mytitle}{a small book of rhyme.}| +\newcommand{\mytitle}{a small book of rhyme.} + +\verb|\capitalisewords{\mytitle}| +\capitalisewords{\mytitle} + +\verb|\xcapitalisewords{\mytitle}| +\xcapitalisewords{\mytitle} + +\egroup Formatting for the entire phrase must go outside \verb|\capitalisewords| (unlike \verb|\makefirstuc|). Compare: -\verb|\capitalisewords{\textbf{a small book of rhyme.}}| +\begin{verbatim} +\capitalisewords{\textbf{a small book of rhyme.}} +\end{verbatim} \capitalisewords{\textbf{a small book of rhyme.}} -with: - -\verb|\textbf{\capitalisewords{a small book of rhyme.}}| +\begin{verbatim} +\textbf{\capitalisewords{a small book of rhyme.}} +\end{verbatim} \textbf{\capitalisewords{a small book of rhyme.}} \medskip -Use \verb|\capitalisefmtwords| instead (full stop outside -argument to check for spurious spaces): +Use \verb|\capitalisefmtwords| instead. The starred form +is limited to one text-block command at the start of the argument. + +\begin{verbatim} +\capitalisefmtwords*{\emph{a small book of rhyme}} +\end{verbatim} +\capitalisefmtwords*{\emph{a small book of rhyme}} + +Additional text-block commands can cause unexpected results. + +\begin{verbatim} +\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}} +\end{verbatim} +\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}} + + +\section{Title Case (Contains Text-Block Formatting Commands)} + +The unstarred form of \verb|\capitalisefmtwords| is still a bit +experimental and is only designed +for phrases that contain text-block commands with a single +argument, which should be a word or sub-phrase. \verb|\capitalisefmtwords{\textbf{a small book of rhyme}}.| \capitalisefmtwords{\textbf{a small book of rhyme}}. @@ -812,17 +1089,28 @@ argument to check for spurious spaces): \verb|\capitalisefmtwords{a \textbf{small book} of rhyme}.| \capitalisefmtwords{a \textbf{small book} of rhyme}. -\verb|\capitalisefmtwords{\textbf{a} book of rhyme}.| +\verb|\capitalisefmtwords{\textbf{a} small book of rhyme}.| \capitalisefmtwords{\textbf{a} small book of rhyme}. -\verb|\capitalisefmtwords{\textbf{a book }of rhyme}.| -\capitalisefmtwords{\textbf{a small book }of rhyme}. - \verb|\capitalisefmtwords{a small book \textbf{of rhyme}}.| \capitalisefmtwords{a small book \textbf{of rhyme}}. \medskip +Be careful of trailing spaces at the end a group. They can confuse +things. + +\verb|\capitalisefmtwords{\textbf{a small }book of rhyme}.| +\capitalisefmtwords{\textbf{a small }book of rhyme}. + +\verb|\capitalisefmtwords{\textbf{a small book }of rhyme}.| +\capitalisefmtwords{\textbf{a small book }of rhyme}. + +\verb|\capitalisefmtwords{\textbf{a small book of }rhyme}.| +\capitalisefmtwords{\textbf{a small book of }rhyme}. + +\medskip + Use semantic commands for things like quotations: \begin{verbatim} @@ -836,6 +1124,25 @@ Use semantic commands for things like quotations: (But make them robust if you intend using commands like \verb|\ecapitalisefmtwords|.) +Similarly for other types of punctuation: +\begin{verbatim} +\newcommand*{\esq}[1]{'?#1?} +\capitalisefmtwords{\esq{D\'onde est\'a libro}} +\end{verbatim} +\newcommand*{\esq}[1]{?`#1?} +\capitalisefmtwords{\esq{D\'onde est\'a libro}} + +\medskip + +Anything more complicated than a simple one-argument text-block +command requires the starred version. + +\begin{verbatim} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisefmtwords*{\textbf{an \swap{un}{usually} small book of} rhyme}. +\end{verbatim} +\newcommand*{\swap}[2]{{#2}{#1}} +\capitalisefmtwords*{\textbf{an \swap{un}{usually} small book of} rhyme}. \medskip @@ -916,43 +1223,29 @@ As illustrated next: \verb|\capitalisefmtwords{\relax a book of rhyme.}| \capitalisefmtwords{\relax a book of rhyme.} -\section{Title Case (No Formatting)} - -\bgroup -%Clearing ``nocap'' words. -%\verb|\MFUclear| -%\MFUclear - -\verb|\capitalisewords{the wind in the willows}| -\capitalisewords{the wind in the willows} - -\verb|\capitalisewords{a small book of rhyme.}| -\capitalisewords{a small book of rhyme.} - -\medskip +\section{Compound Words} -\verb|\space| isn't considered a word boundary for -\verb|\capitalisewords| as shown below: +Use \verb|\MFUhyphentrue| to title case each part of +a compound word. +Default: \begin{verbatim} -\capitalisewords{a small\space book of rhyme.} +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. \end{verbatim} -\capitalisewords{a small\space book of rhyme.} - -\medskip -No expansion is performed on the argument of -\verb|\capitalisewords|: +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. -\verb|\newcommand{\mytitle}{a small\space book of rhyme.}| -\newcommand{\mytitle}{a small\space book of rhyme.} - -\verb|\capitalisewords{\mytitle}| -\capitalisewords{\mytitle} - -\verb|\xcapitalisewords{\mytitle}| -\xcapitalisewords{\mytitle} +Compare with +\begin{verbatim} +\MFUhyphentrue +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. +\end{verbatim} +\MFUhyphentrue +\capitalisewords{a fast-paced book of rhyme}. +\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}. -\egroup \end{document} % \end{macrocode} %\fi diff --git a/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.ins b/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.ins index b90e4ce4cf5..d7f2a4d372a 100644 --- a/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.ins +++ b/Master/texmf-dist/source/latex/mfirstuc/mfirstuc.ins @@ -1,4 +1,4 @@ -% mfirstuc.ins generated using makedtx version 1.1 2016/7/29 22:54 +% mfirstuc.ins generated using makedtx version 1.1 2016/7/31 20:20 \input docstrip \preamble diff --git a/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc-english.sty b/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc-english.sty index ad28d61a6c0..7b05e12309d 100644 --- a/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc-english.sty +++ b/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc-english.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{mfirstuc-english}[2016/07/29 v2.03 (NLCT)] +\ProvidesPackage{mfirstuc-english}[2016/07/31 v2.04 (NLCT)] \RequirePackage{mfirstuc} \MFUnocap{a} \MFUnocap{an} diff --git a/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty b/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty index 08b0f1f3aea..e94ec242a2a 100644 --- a/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty +++ b/Master/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{mfirstuc}[2016/07/29 v2.03 (NLCT)] +\ProvidesPackage{mfirstuc}[2016/07/31 v2.04 (NLCT)] \RequirePackage{etoolbox} \newif\if@glscs \newtoks\@glsmfirst @@ -107,6 +107,9 @@ \def\@gls@first{#1}\def\@gls@rest{#2}% }% }% + {% + \def\@gls@first{#1}\def\@gls@rest{#2}% + }% } }% {% @@ -223,12 +226,21 @@ \forlistloop\mfu@checkword@do\@mfu@nocaplist } \newcommand*{\mfu@checkword@do}[1]{% - \ifdefstring{\mfu@checkword@arg}{#1}% - {% - \let\@mfu@domakefirstuc\@firstofone - \listbreak - }% - {}% + \def\mfu@checkword@argii{#1}% + \ifdefequal\mfu@checkword@arg\mfu@checkword@argii + {% + \let\@mfu@domakefirstuc\@firstofone + \listbreak + }% + {% + \def\mfu@checkword@argii{#1{\@mfu@terminator}}% + \ifdefequal\mfu@checkword@arg\mfu@checkword@argii + {% + \let\@mfu@domakefirstuc\@firstofone + \listbreak + }% + {}% + }% } \newcommand*{\@mfu@nocaplist}{} \newcommand*{\MFUnocap}[1]{\listadd{\@mfu@nocaplist}{#1}} @@ -241,28 +253,98 @@ \protected@edef\@MFU@caparg{#1}% \expandafter\capitalisewords\expandafter{\@MFU@caparg}% } -\newcommand*{\capitalisefmtwords}[1]{% +\newcommand\@mfu@nil{\unskip} +\newcommand*\@mfu@nnil{\@mfu@nil} +\newcommand*{\capitalisefmtwords}{% + \@ifstar\@s@capitalisefmtwords\@ns@capitalisefmtwords +} +\newcommand*{\@s@capitalisefmtwords}[1]{% + \@@s@checkgrp@@capitalisefmtwords#1\@nil +} +\newcommand*{\@@s@checkgrp@@capitalisefmtwords}{% + \@ifnextchar\bgroup{\@@s@nocs@capitalisefmtwords}{\@@s@capitalisefmtwords}% +} +\def\@@s@nocs@capitalisefmtwords#1\@nil{% + \capitalisewords{#1}% +} +\newcommand*{\@@s@capitalisefmtwords}[1]{% + \def\gls@argi{#1}% + \ifx\gls@argi\@MFU@protect + \let\@mfu@capfmtwordsnext\@@s@capitalisefmtwords + \else + \ifx\gls@argi\@nnil + \let\@mfu@capfmtwordsnext\relax + \else + \def\@gls@tmp{\ #1}% + \@onelevel@sanitize\@gls@tmp + \expandafter\@gls@checkcs\@gls@tmp\relax\relax + \if@glscs + \def\@mfu@capfmtwordsnext{\@@s@cs@capitalisefmtwords#1}% + \else + \def\@mfu@capfmtwordsnext{\@@s@nocs@capitalisefmtwords#1}% + \fi + \fi + \fi + \@mfu@capfmtwordsnext +} +\newcommand*{\@@s@cs@capitalisefmtwords}[1]{% + \@ifnextchar\bgroup + {\@@s@cs@g@capitalisefmtwords#1}% + {\@@s@cs@ng@capitalisefmtwords#1}% +} +\def\@@s@cs@g@capitalisefmtwords#1#2#3\@nil{% + #1{\capitalisewords{#2}}% + \ifblank{#3}% + {}% + {% + \def\gls@add@space{}% + \let\@mfu@checkword\mfu@checkword + \mfu@capitalisewords#3 \@nil\mfu@endcap + }% +} +\def\@@s@cs@ng@capitalisefmtwords#1#2\@nil{% + \capitalisewords{#1#2}% +} +\newcommand*{\@ns@capitalisefmtwords}[1]{% \let\@mfu@checkword\@gobble \def\gls@add@space{}% - \@capitalisefmtwords#1 \@nil\relax + \@capitalisefmtwords#1 \@mfu@nil{} \unskip +} +\newcommand*{\@capitalisefmtwords}{% + \@ifnextchar\bgroup{\@capitalise@g@fmtwords}{\@capitalise@ng@fmtwords}% } -\def\@capitalisefmtwords#1 #2{% - \def\gls@argi{#2}% - \ifx\gls@argi\@nnil - \def\@mfu@capfmtwordsnext{\@capitalise@fmtwords#1\@nil}% +\newcommand*{\@capitalise@g@fmtwords}[1]{% + \@capitalise@ng@fmtwords{{#1}}% +} +\def\@mfu@ifnil#1#2\@mfu@end@nil#3#4{% + \def\gls@argi{#1}% + \ifx\gls@argi\@mfu@nnil + #3% \else - \def\@mfu@capfmtwordsnext{\@capitalise@fmtwords#1\@nil - \def\gls@add@space{ }% - \let\@mfu@checkword\mfu@checkword - \@@cap@nofmtphrase#2}% + #4% \fi +} +\def\@capitalise@ng@fmtwords#1 {% + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {% + \def\@mfu@capfmtwordsnext{#1}% + }% + {% + \def\@mfu@capfmtwordsnext{% + \@capitalise@fmtwords#1\@mfu@nil + \def\gls@add@space{ }% + \let\@mfu@checkword\mfu@checkword + \@@cap@nofmtphrase}% + }% \@mfu@capfmtwordsnext }% \def\@capitalise@fmtwords#1{% - \def\gls@argi{#1}% - \ifx\gls@argi\@nnil - \let\@mfu@capfmtwordsnext\relax - \else + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {% + \def\@mfu@capfmtwordsnext{#1}% + }% + {% + \def\gls@argi{#1}% \ifx\gls@argi\@MFU@protect \def\@mfu@capfmtwordsnext{\@capitalise@fmtwords}% \else @@ -279,50 +361,67 @@ \fi \fi \fi - \fi + }% \@mfu@capfmtwordsnext } \def\@@capitalisefmtwords#1{% - \@ifnextchar\bgroup{\@@capfmtphrase#1}{\@@capnofmtphrase#1}% + \@ifnextchar\bgroup{\@@capfmtsubphrase#1}{\@@capnofmtphrase#1}% } -\def\@@capfmtphrase#1#2#3{% - \def\@gls@tmp{#3}% - \ifx\@gls@tmp\@nnil - \def\@mfu@capfmtwordsnext{#1{\@capitalisefmtwords#2 \@nil}}% - \else - \def\@mfu@capfmtwordsnext{\@@capfmtsubphrase#1{#2}#3}% - \fi - \@mfu@capfmtwordsnext +\def\@@capnofmtphrase{% + \@ifnextchar\bgroup{\@@cap@g@nofmtphrase}{\@@cap@ng@nofmtphrase}% } -\def\@@capnofmtphrase#1\@nil{% +\def\@@cap@ng@nofmtphrase#1\@mfu@nil{% \gls@add@space \@mfu@mid@capitalisewords{#1}% \def\gls@add@space{ }% } -\def\@@capfmtsubphrase#1#2#3\@nil{% - \gls@add@space - #1{\@mfu@mid@capitalisewords{#2}}% +\def\@@cap@g@nofmtphrase#1{% + \@@cap@ng@nofmtphrase{{#1}}% +} +\newcommand*\@mfu@terminator{\hbox{}} +\def\@@capfmtsubphrase#1#2#3{% + #1{\@capitalisefmtwords#2{\@mfu@terminator} \@mfu@nil{} \unskip}% \def\gls@add@space{ }% \let\@mfu@checkword\mfu@checkword - #3% + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {\let\@mfu@fmtsubphrasenext\relax}% + {\def\@mfu@fmtsubphrasenext{#3}}% + \@mfu@fmtsubphrasenext } -\def\@@cap@nofmtphrase#1 #2\@nil{% - \def\gls@arg{#2}% - \ifx\gls@arg\@empty - \@capitalisefmtwords#1 \@nil - \else - \@capitalisefmtwords#1 \@nil - \def\gls@add@space{ }% - \let\@mfu@checkword\mfu@checkword - \@capitalisefmtwords#2 \@nil - \fi +\def\@@cap@nofmtphrase#1 {% + \@mfu@ifnil#1\relax\relax\@mfu@end@nil + {% + \def\@mfu@capnofmtwordsnext{#1 }% + }% + {% + \def\@mfu@capnofmtwordsnext{% + \@capitalisefmtwords#1 \@mfu@nil{} \unskip + \def\gls@add@space{ }% + \let\@mfu@checkword\mfu@checkword + \@capitalisefmtwords + }% + }% + \@mfu@capnofmtwordsnext +} +\newcommand*{\xcapitalisefmtwords}{% + \@ifstar\@s@xcapitalisefmtwords\@ns@xcapitalisefmtwords +} +\newcommand*{\@s@xcapitalisefmtwords}[1]{% + \expandafter\@s@capitalisefmtwords\expandafter{#1}% } -\newcommand*{\xcapitalisefmtwords}[1]{% - \expandafter\capitalisefmtwords\expandafter{#1}% +\newcommand*{\@ns@xcapitalisefmtwords}[1]{% + \expandafter\@ns@capitalisefmtwords\expandafter{#1}% +} +\newrobustcmd*{\ecapitalisefmtwords}{% + \@ifstar\@s@ecapitalisefmtwords\@ns@ecapitalisefmtwords +} +\newcommand*{\@s@ecapitalisefmtwords}[1]{% + \protected@edef\@MFU@caparg{#1}% + \expandafter\@s@capitalisefmtwords\expandafter{\@MFU@caparg}% } -\newrobustcmd*{\ecapitalisefmtwords}[1]{% +\newcommand*{\@ns@ecapitalisefmtwords}[1]{% \protected@edef\@MFU@caparg{#1}% - \expandafter\capitalisefmtwords\expandafter{\@MFU@caparg}% + \expandafter\@ns@capitalisefmtwords\expandafter{\@MFU@caparg}% } \endinput %% |