Bug Tracker RSS feed

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

Return to Search Results

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. All guest comments have to be manually checked before they appear on the page. There are too many bots trying to spam the site to allow unauthenticated users to post without verification.

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

Return to Search Results