`\tl_to_uppercase:n` und `\tl_to_lowercase:n` existieren zwar, sind aber nicht (mehr) dafür gedacht, Groß- und Kleinschreibung zu manipulieren, und werden gerüchteweise auch aus expl3 entfernt werden. Dafür gibt es
- `\tl_upper_case:n`,
- `\tl_lower_case:n` und
- `\tl_mixed_case:n`.
Beschrieben werden sie in [interface3][1] im Abschnitt **l3candidates**/Additions *l3candidates/Additions to l3tl. Wichtig l3tl*. **Wichtig zu wissen: sie expandieren ihr Argument!
Argument!**
\cs_new_protected:Npn \cletus_replace:n #1
{
\tl_set:Nn \l_tmpa_tl {#1}
\tl_replace_all:Nnn \l_tmpa_tl {ß} {ss}
\tl_replace_all:Nnn \l_tmpa_tl {~} {/}
% Hier muss jetzt jeder Klein- durch den entsprechenden Großbuchstaben ersetzt werden.
\tl_upper_case:n { \l_tmpa_tl }
}
oder eventuell mit `V`-Argument (was ich persönlich bevorzugen würde):
\cs_new_protected:Npn \cletus_replace:n #1
{
\tl_set:Nn \l_tmpa_tl {#1}
\tl_replace_all:Nnn \l_tmpa_tl {ß} {ss}
\tl_replace_all:Nnn \l_tmpa_tl {~} {/}
% Hier muss jetzt jeder Klein- durch den entsprechenden Großbuchstaben ersetzt werden.
\tl_upper_case:V \l_tmpa_tl
}
\cs_generate_variant:Nn \tl_upper_case:n { V }
Komplettes Beispiel:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{expl3,xparse,etoolbox}
% es ist nötig, \linebreak robust zu machen, da \tl_upper_case:n sein Argument
% expandiert:
\robustify\linebreak
\ExplSyntaxOn
\cs_new_protected:Npn \cletus_replace:n #1
{
\tl_set:Nn \l_tmpa_tl {#1}
\tl_replace_all:Nnn \l_tmpa_tl {ß} {ss}
\tl_replace_all:Nnn \l_tmpa_tl {~} {/\linebreak[1]}
% Hier muss jetzt jeder Klein- durch den entsprechenden Großbuchstaben ersetzt werden.
\tl_upper_case:V \l_tmpa_tl
}
\cs_generate_variant:Nn \tl_upper_case:n { V }
\NewDocumentCommand \MeinBefehl {m}
{ \cletus_replace:n {#1} }
\ExplSyntaxOff
\begin{document}
\MeinBefehl{aus klein mach groß}
\end{document}
[1]: http://mirrors.ctan.org/macros/latex/contrib/l3kernel/interface3.pdf