summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-08-01 21:47:34 +0000
committerKarl Berry <karl@freefriends.org>2016-08-01 21:47:34 +0000
commita680fbdd019a24e851538a6dfde26ef301a0a286 (patch)
treedb1472fe87695f0c28151a86b79fa9444072d2a7
parent69961a3da1314fa29424307d3862116b626a3c7a (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/CHANGES6
-rw-r--r--Master/texmf-dist/doc/latex/mfirstuc/README4
-rw-r--r--Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdfbin253433 -> 258742 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.html704
-rw-r--r--Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdfbin301194 -> 294036 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.tex175
-rw-r--r--Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdfbin81539 -> 114525 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.tex160
-rw-r--r--Master/texmf-dist/source/latex/mfirstuc/mfirstuc.dtx521
-rw-r--r--Master/texmf-dist/source/latex/mfirstuc/mfirstuc.ins2
-rw-r--r--Master/texmf-dist/tex/latex/mfirstuc/mfirstuc-english.sty2
-rw-r--r--Master/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty199
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
index bb88c50955c..c6b9d28275c 100644
--- a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdf
+++ b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-code.pdf
Binary files differ
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 /> &#x00A0;<span class="subsectionToc" >3.1 <a
+<br /> &#x00A0;<span class="sectionToc" >3.1 <a
href="#sec:pdfbookmarks" id="QQ2-1-5">PDF Bookmarks</a></span>
-<br /> &#x00A0;<span class="subsectionToc" >3.2 <a
+<br /> &#x00A0;<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>&#x00A0;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>&#x00A0;upper casing command.
+For example,
@@ -390,30 +397,67 @@ class="cmtt-10">\makefirstuc{{</span><span
class="cmtt-10">&auml;</span><span
class="cmtt-10">}bc}</span></span></span> produces &Auml;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">&sect;</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>&#8217;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}
+&#x00A0;<br />\usepackage[T1]{fontenc}
+&#x00A0;<br />\usepackage[utf8]{inputenc}
+&#x00A0;<br />\usepackage{datatool-base}[2016/01/12]%&#x00A0;v2.24+
+&#x00A0;<br />\usepackage{mfirstuc}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\makefirstuc{&eacute;lite}
+&#x00A0;<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 &aelig;Bc. However as from version 1.02, it now produces &AElig;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}
&#x00A0;<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}
&#x00A0;<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">&#x00A0;</span></span><a
- id="dx1-3004"></a> <span
+ id="dx1-3011"></a> <span
class="cmtt-10">\xmakefirstuc{</span>&#x27E8;<span
class="cmitt-10">stuff</span>&#x27E9;<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>&#x27E8;<span
class="cmti-10">stuff </span>&#x27E9;<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}
&#x00A0;<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">&#x00A0;</span></span><a
- id="dx1-3005"></a> <span
+ id="dx1-3012"></a> <span
class="cmtt-10">\emakefirstuc{</span>&#x27E8;<span
class="cmitt-10">text</span>&#x27E9;<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&#x00A0;a}
&#x00A0;<br />\newcommand{\xyz}{xyz}
&#x00A0;<br />No&#x00A0;expansion:&#x00A0;\makefirstuc{\abc}.
&#x00A0;<br />First&#x00A0;object&#x00A0;one-level&#x00A0;expansion:&#x00A0;\xmakefirstuc{\abc}.
&#x00A0;<br />Fully&#x00A0;expanded:&#x00A0;\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">&#x00A0;</span></span><a
- id="dx1-3011"></a> <span
+ id="dx1-3018"></a> <span
class="cmtt-10">\glsmakefirstuc{</span>&#x27E8;<span
class="cmitt-10">text</span>&#x27E9;<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&#x00A0;#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">&#x00A0;</span></span><a
id="dx1-4001"></a> <span
class="cmtt-10">\capitalisewords{</span>&#x27E8;<span
class="cmitt-10">text</span>&#x27E9;<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 &#x27E8;<span
@@ -545,50 +591,50 @@ class="cmsy-10">&sect;</span>3.2
</a><a
href="#sec:nocap">Excluding Words From Case-Changing<!--tex4ht:ref: sec:nocap --></a> for excluding words (such as &#8220;of&#8221;) 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">&#x00A0;</span></span><a
id="dx1-4003"></a> <span
class="cmtt-10">\MFUcapword{</span>&#x27E8;<span
class="cmitt-10">word</span>&#x27E9;<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>&#x27E8;<span
class="cmti-10">word</span>&#x27E9;<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">&#x00A0;</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">&#x00A0;</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">&#x00A0;</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&#x00A0;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
&#x00A0;<br />\capitalisewords{server-side&#x00A0;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&#x00A0;sample&#x00A0;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&#x00A0;sample&#x00A0;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>&#x27E8;<span
class="cmitt-10">phrase</span>&#x27E9;<span
class="cmtt-10">} </span></div><hr>
-</p><!--l. 317--><p class="noindent" >
+</p><!--l. 342--><p class="noindent" >
where &#x27E8;<span
class="cmti-10">phrase</span>&#x27E9; 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>&#x27E9;<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&#x00A0;small&#x00A0;book&#x00A0;of&#x00A0;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&#x00A0;\textbf{small&#x00A0;book}&#x00A0;of&#x00A0;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&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;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}
&#x00A0;<br />\capitalisefmtwords{\textbf{a&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;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}
+ &#x00A0;<br />\capitalisefmtwords*{\emph{a&#x00A0;small&#x00A0;book&#x00A0;of&#x00A0;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}
+ &#x00A0;<br />\capitalisefmtwords*{a&#x00A0;small&#x00A0;book&#x00A0;of&#x00A0;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&#8217;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}
+&#x00A0;<br />\capitalisefmtwords*{\emph{a&#x00A0;small}&#x00A0;book&#x00A0;\textbf{of&#x00A0;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">&#x00A0;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}
+&#x00A0;<br />\capitalisefmtwords*{a&#x00A0;\emph{very&#x00A0;small}&#x00A0;book&#x00A0;of&#x00A0;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">&#x00A0;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&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;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&#x00A0;a&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;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}}
+&#x00A0;<br />\capitalisefmtwords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;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}}
+&#x00A0;<br />\capitalisefmtwords*{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;rhyme}
+&#x00A0;<br />\capitalisewords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;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">&#x00A0;</span></span><a
- id="dx1-4015"></a> <span
+ id="dx1-4019"></a> <span
class="cmtt-10">\xcapitalisewords{</span>&#x27E8;<span
class="cmitt-10">text</span>&#x27E9;<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>&#x27E8;<span
class="cmti-10">text</span>&#x27E9;<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">&#x00A0;</span></span><a
- id="dx1-4016"></a> <span
+ id="dx1-4020"></a> <span
class="cmtt-10">\ecapitalisewords{</span>&#x27E8;<span
class="cmitt-10">text</span>&#x27E9;<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">&#x00A0;</span></span><a
- id="dx1-4017"></a> <span
+ id="dx1-4021"></a> <span
class="cmtt-10">\xcapitalisefmtwords{</span>&#x27E8;<span
class="cmitt-10">text</span>&#x27E9;<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>&#x27E8;<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>&#x27E8;<span
class="cmti-10">text</span>&#x27E9;<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">&#x00A0;</span></span><a
- id="dx1-4018"></a> <span
+ id="dx1-4022"></a> <span
class="cmtt-10">\ecapitalisefmtwords{</span>&#x27E8;<span
class="cmitt-10">text</span>&#x27E9;<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&#x00A0;four&#x00A0;five}
&#x00A0;<br />\newcommand{\xyz}{one&#x00A0;two&#x00A0;three}
&#x00A0;<br />No&#x00A0;expansion:&#x00A0;\capitalisewords{\abc}.
&#x00A0;<br />First&#x00A0;object&#x00A0;one-level&#x00A0;expansion:&#x00A0;\xcapitalisewords{\abc}.
&#x00A0;<br />Fully&#x00A0;expanded:&#x00A0;\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 &#8220;four&#8221; has been hidden within <span
class="cmtt-10">\space </span>so it&#8217;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&#x00A0;book&#x00A0;of&#x00A0;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&#x00A0;book\space&#x00A0;of&#x00A0;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&#x00A0;book\space&#x00A0;of&#x00A0;rhyme.}
&#x00A0;<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&#x00A0;book\space&#x00A0;of&#x00A0;rhyme.}
&#x00A0;<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}}
+ &#x00A0;<br />\capitalisewords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;rhyme}
+ &#x00A0;<br />\ecapitalisewords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;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&#x00A0;{ok}{bo}&#x00A0;of&#x00A0;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&#x00A0;hyperref&#x00A0;Warning:&#x00A0;Token&#x00A0;not&#x00A0;allowed&#x00A0;in&#x00A0;a&#x00A0;PDF&#x00A0;string
&#x00A0;<br />(PDFDocEncoding):
&#x00A0;<br />(hyperref)&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;removing&#x00A0;&#8216;\capitalisewords&#8217;
</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>&#8217;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
&#x00A0;<br />&#x00A0;&#x00A0;{\capitalisewords{a&#x00A0;book&#x00A0;of&#x00A0;rhyme}}%&#x00A0;TeX
&#x00A0;<br />&#x00A0;&#x00A0;{A&#x00A0;Book&#x00A0;of&#x00A0;Rhyme}%&#x00A0;PDF
&#x00A0;<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>&#8217;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{%
&#x00A0;<br />&#x00A0;\let\capitalisewords\@firstofone
&#x00A0;<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&#8217;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&#8217;t be capitalised unless they occur at the
start of &#x27E8;<span
class="cmti-10">text</span>&#x27E9; 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">&#x00A0;</span></span><a
id="dx1-6001"></a> <span
class="cmtt-10">\MFUnocap{</span>&#x27E8;<span
class="cmitt-10">word</span>&#x27E9;<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">&#x00A0;</span></span><a
id="dx1-6002"></a> <span
class="cmtt-10">\gMFUnocap{</span>&#x27E8;<span
class="cmitt-10">word</span>&#x27E9;<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&#x00A0;wind&#x00A0;in&#x00A0;the&#x00A0;willows}
&#x00A0;<br />\MFUnocap{in}%
&#x00A0;<br />\MFUnocap{the}%
&#x00A0;<br />\capitalisewords{the&#x00A0;wind&#x00A0;in&#x00A0;the&#x00A0;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&#8217;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">&#x00A0;</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&#8217;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&#8217;t want that specific
instance to be capitalised. For example:
</p>
- <div class="verbatim" id="verbatim-34">
+ <div class="verbatim" id="verbatim-43">
\MFUclear
&#x00A0;<br />\capitalisewords{the&#x00A0;{}wind&#x00A0;in&#x00A0;the&#x00A0;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&#8217;t be parsed. For
@@ -1008,16 +1182,17 @@ example:
</p>
- <div class="verbatim" id="verbatim-35">
+ <div class="verbatim" id="verbatim-44">
\capitalisewords{this&#x00A0;is&#x00A0;section&#x00A0;{}\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 &#8220;a&#8221;, &#8220;an&#8221;, &#
to add other words to this list, such as prepositions but, as there&#8217;s some dispute
over whether prepositions should be capitalised, I&#x00A0;don&#8217;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&#8217;s a good idea to also add a version in the final optional argument, for example:
+<!--l. 730--><p class="nopar" > It&#8217;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&#x00A0;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>&#8217;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>&#x00A0;doesn&#8217;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&#x00A0;simplistic version of the <span
+</p><!--l. 764--><p class="indent" > A&#x00A0;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&#x00A0;#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&#x00A0;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 &#8220;a&#8221; 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>&#x27E8;<span
class="cmitt-10">stuff</span>&#x27E9;<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">
!&#x00A0;Argument&#x00A0;of&#x00A0;\UTFviii@two@octets&#x00A0;has&#x00A0;an&#x00A0;extra&#x00A0;}.
</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">&atilde;</span><span
class="cmtt-10">bc</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">}</span></span></span> won&#8217;t work. It will only work if the character <span
class="cmtt-10">&atilde;</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>&#x00A0;having been written before Unicode was
invented. Although <span
class="cmtt-10">&atilde;</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&#x00A0;(and therefore XeLaTeX) is a modern implementation of <span class="TEX">T<span
+<!--l. 850--><p class="indent" > Note that XeTeX&#x00A0;(and therefore XeLaTeX) is a modern implementation of <span class="TEX">T<span
class="E">E</span>X</span>&#x00A0;designed
to work with Unicode and therefore doesn&#8217;t suffer from this drawback. Now let&#8217;s look at the
XeLaTeX&#x00A0;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">&atilde;</span><span
@@ -1320,95 +1498,111 @@ class="cmti-10">&#x00A0;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>&#x00A0;&#x00A0;<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&#x00A0;&#x00A0;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>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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&#x00A0;&#x00A0;13 <br /></span>
+class="cmss-10">fontspec </span>package&#x00A0;&#x00A0;19 <br /></span>
</p><p class="theindex"> <span
class="cmbx-10">G</span>
<span class="index-item"><span
-class="cmss-10">glossaries </span>package&#x00A0;&#x00A0;4, 12 <br /></span>
+class="cmss-10">glossaries </span>package&#x00A0;&#x00A0;6, 7, 17 <br /></span>
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">\glsmakefirstuc</span></span></span>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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&#x00A0;&#x00A0;9 <br /></span>
+class="cmss-10">hyperref </span>package&#x00A0;&#x00A0;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>&#x00A0;&#x00A0;<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&#x00A0;&#x00A0;3 <br /></span>
+class="cmss-10">inputenc </span>package&#x00A0;&#x00A0;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>&#x00A0;&#x00A0;<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&#x00A0;&#x00A0;10 <br /></span>
+class="cmss-10">mfirstuc </span>package&#x00A0;&#x00A0;6, 19 <br /></span>
+<span class="index-item"><span
+class="cmss-10">mfirstuc-english </span>package&#x00A0;&#x00A0;15 <br /></span>
+
+
+
<span class="index-item"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">\MFUcapword</span></span></span>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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&#x00A0;&#x00A0;4 <br /></span>
+class="cmss-10">textcase </span>package&#x00A0;&#x00A0;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>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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>&#x00A0;&#x00A0;<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
index 96f70aad756..02bb0409344 100644
--- a/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdf
+++ b/Master/texmf-dist/doc/latex/mfirstuc/mfirstuc-manual.pdf
Binary files differ
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
index 0468a09a98b..e39ab58cc34 100644
--- a/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdf
+++ b/Master/texmf-dist/doc/latex/mfirstuc/sample-mfirstuc.pdf
Binary files differ
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
%%