在 URL 中使用 \gobblechar 的 stringstrings 删除字符串和命令/标记组合中的第一个字符,@JosephWright 建议使用命令\ExplTitlecase
(expl3) 将一组以小写字母设置的单词的第一个单词大写。
在以下 MWE 中,我使用了 Joseph Wright 的\ExplTitlecase
。我展示了示例 1 至 4。
%MWE
\documentclass{article}
\newcommand*{\myMixedCaseCommand}[1]{#1}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\ExplTitlecase}{m}
{
\text_titlecase:n { #1 }
}
\ExplSyntaxOff
\begin{document}
%Example 1
\ExplTitlecase{first word will be capitalized}
%Example 2
\ExplTitlecase{a certain \uppercase{UPPERCASE} acronym within a set of words set in lowercase}
%Example 3
\ExplTitlecase{a certain \lowercase{lowercase} acronym within a set of words set in lowercase}
%Example 4
\ExplTitlecase{a certain \myMixedCaseCommand{MiXeDCaSe} acronym within a set of words set in lowercase}
\end{document}
MWE 编译良好,示例 1 至 3 中的输出符合预期。但是,对于示例 4,我希望找到某种命令(我暂时称之为),\myMixedCaseCommand
以便此命令保留首字母缩略词 MiXeDCaSe 的混合大小写特性。在输出中,MiXeDCaSe 被小写并变为混合大小写。我希望输出完全是 MiXeDCaSe。
请寻求任何帮助。
答案1
您可以将不应由进程执行其参数的命令添加到列表中。
\documentclass{article}
\NewDocumentCommand{\myMixedCaseCommand}{m}{#1}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\ExplTitlecase}{m}
{
\text_titlecase:n { #1 }
}
% add \myMixedCaseCommand to the exclusion list
\tl_put_right:Nn \l_text_case_exclude_arg_tl { \myMixedCaseCommand }
\ExplSyntaxOff
\begin{document}
%Example 1
\ExplTitlecase{first word will be capitalized}
%Example 2
\ExplTitlecase{a certain \uppercase{UPPERCASE} acronym within a set of words set in lowercase}
%Example 3
\ExplTitlecase{a certain \lowercase{lowercase} acronym within a set of words set in lowercase}
%Example 4
\ExplTitlecase{a certain \myMixedCaseCommand{MiXeDCaSe} acronym within a set of words set in lowercase}
\end{document}