Bug Tracker RSS feed

I’m currently working on a major new version of the datatool package. This may take a while. Please be patient. (Experimental version available for testing.)

ID 104🔗
Submitted by: Nicola Talbot 🦜
Date: 2015-12-08 09:41:49
Status Closed (Fixed)
Category mfirstuc
Version 2.01
Summary \capitalisewords fails with commands in non-first word

Sign in to subscribe to notifications about this report.

Description

\capitalisewords works okay when the first word contains a command, but not when subsequent words of the phrase contain commands or grouping.

Error message:

! You can't use `macro parameter character #' in math mode.
<recently read> ##

MWE

Download (436B)

\documentclass{article}

\usepackage{mfirstuc}

\begin{document}
%\newcommand*{\test}{\textbf{s}ample phrase}% works
%\newcommand*{\test}{\textbf{s}ample p\textbf{h}rase}% doesn't work
%\newcommand*{\test}{\textbf{s}ample {p}hrase}% doesn't work
\newcommand*{\test}{\textbf{s}ample \textbf{p}hrase}% doesn't work

Tagged text: \test.

First letter uppercase: \xmakefirstuc{\test}.

Title Case: \xcapitalisewords{\test}.

\end{document}

Evaluation

The cause is due to the use of etoolbox's \ifinlist macro, which is only intended for unformatted strings. The same error message is caused by:

\documentclass{article}

\usepackage{etoolbox}

\begin{document}

\newcommand{\testlist}{}

\ifinlist{\textbf{f}oo}{\testlist}{TRUE}{FALSE}.

\end{document}
The remedy is for mfirstuc (or its author, me) to follow the recommendation of the etoolbox manual and use a loop instead of \ifinlist. This will be fixed in the next version of mfirstuc.

Temporary patch for pre v2.02:

\renewcommand*\mfu@checkword[1]{%
  \def\mfu@checkword@arg{#1}%
  \let\@mfu@domakefirstuc\makefirstuc
  \forlistloop\mfu@checkword@do\@mfu@nocaplist
}
\newcommand*{\mfu@checkword@do}[1]{%
 \ifdefstring{\mfu@checkword@arg}{#1}%
 {%
   \let\@mfu@domakefirstuc\@firstofone
   \listbreak
 }%
 {}%
}

Update 2015-12-17: Fixed in version 2.02.

Comments

0 comments.


Add Comment

Name (optional):

Are you human? Please confirm the bug report ID (which can be found at the top of this page) or login if you have an account.

Comment:


You can use the following markup:

Block:

[pre]Displayed verbatim[/pre]
[quote]block quote[/quote]

In line:

[tt]code[/tt]
[file]file/package/class name[/file]
[em]emphasized text[/em]
[b]bold text[/b]
[url]web address[/url] [sup]superscript[/sup]
[sub]subscript[/sub]

Ordered list:
[ol]
[li]first item[/li]
[li]second item[/li]
[/ol]

Unordered list:
[ul]
[li]first item[/li]
[li]second item[/li]
[/ul]

You can use the Preview button to review your message formatting before submitting.

Page permalink: https://www.dickimaw-books.com/bugtracker.php?key=104