我想取一个包含下划线的字符串并将其转换为骆驼香烟盒。我正尝试使用stringstrings
包来执行此操作。这是我的代码:
\documentclass[11pt]{report}
\usepackage{amsmath}
\usepackage{stringstrings}
\begin{document}
\convertchar[q]{test_string}{\textunderscore}{ ??? }
\capitalizewords[q]{\thestring}
\noblanks{\thestring}
\end{document}
我不确定要将什么作为第三个参数来\convertchar
将下划线转换为空格。我试过~
、quad
和。它们都产生了奇怪的错误。我可以使用什么作为第三个参数,或者,还有其他方法可以获得驼峰式大小写吗?
答案1
当链接stringstrings
命令时,你应该使用编码形式(由选项给出[e]
)直到最后一个命令:
\documentclass[11pt]{report}
\usepackage{amsmath}
\usepackage{stringstrings}
\begin{document}
\convertchar[e]{test_string}{_}{ }
\capitalizewords[e]{\thestring}
\noblanks[q]{\thestring}
\thestring
\end{document}
基本上,[e]
-mode 的工作方式与[q]
-mode 类似,它不会产生任何输出,但会确保特殊字符(例如_
)不会过早扩展。这通常是必需的,如果\thestring
将其输入到另一个命令中。这种方法的最大好处是,如果编写字符串操作命令,则stringstring
可以防止链式操作。手册的 §2 对此进行了详细说明。\expandafter
stringstrings
答案2
这是一个在字符串中用空格替换下划线的简单方法(使用xstring
包)。
\documentclass{article}
\usepackage{xstring}
\begin{document}
\newcommand\myStringWithUnderscores{Man_is_a_rational_animal_so_at_least_I_have_been_told}
\StrSubstitute{\myStringWithUnderscores}{_}{ }[\myStringWithSpaces]
% just for showing the results
\begin{tabular}{ll}
Original string & \texttt{\expandafter\detokenize\expandafter{\myStringWithUnderscores}}\\
Final string & \texttt{\myStringWithSpaces}
\end{tabular}
\end{document}
至于转换为 CamelCase,嗯,这对于计算机来说不够具体,因为计算机无法自动知道哪个字母要变成大写/小写。我猜“转换为 CamelCase”不是可以轻松自动实现的高效操作,您可能必须逐个字符串地进行操作。