Gesucht wird ein Befehl, der mit Hilfe von expl3 alle Leerzeichen durch einen Schrägstrich
ersetzt (vgl. Antwort von Clemens auf diese Frage) und außerdem alle Klein- durch Großbuchstaben ersetzt. Expl3 bietet den Befehl Open in Online-Editor
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{expl3,xparse} \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[0]} % Hier muss jetzt jeder Klein- durch den entsprechenden Großbuchstaben ersetzt werden. \tl_use:N \l_tmpa_tl } \NewDocumentCommand \MeinBefehl {m} { \cletus_replace:n {#1} } \ExplSyntaxOff \begin{document} \MeinBefehl{aus klein mach groß} \end{document} Die gewünschte Ausgabe wäre in diesem Fall »AUS/KLEIN/MACH/GROSS«. |
Beschrieben werden sie in interface3 im Abschnitt l3candidates/Additions to l3tl. Wichtig zu wissen: sie expandieren ihr Argument! Open in Online-Editor
\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 Open in Online-Editor
\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: Open in Online-Editor
\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} beantwortet 08 Jan '16, 23:33 cgnieder Wenn ich jetzt noch nach dem Schrägstrich einen Zeilenumbruch ermöglichen will, funktioniert das leider nicht mehr (vgl. obige Änderung).
(08 Jan '16, 23:52)
Cletus
@Cletus wie ich schrieb:
(09 Jan '16, 14:21)
cgnieder
@Clemens Wieso so umständlich? Einfach
(09 Jan '16, 19:33)
Henri
Interessanter Hinweis, Henri, den
(09 Jan '16, 23:34)
Cletus
Unschön an @Henri: Bitte entferne den Block-Code aus Deinem Kommentar. Der zerstört leider noch immer die Kommentarfunktion.
(10 Jan '16, 12:28)
saputello
@Henry ich reagiere nur auf die Frage. Und
(10 Jan '16, 12:35)
cgnieder
@saputello man darf natürlich nicht vergessen, dass die Befehle und ihr Verhalten noch experimentell sind und noch weiterentwickelt werden. Joseph hat erst vor wenigen Tagen was in die Richtung gesagt: http://tex.stackexchange.com/questions/286650/how-to-make-tl-upper-casen-applied-to-diacritics-work-in-section-argument
(10 Jan '16, 12:41)
cgnieder
@saputello offenbar kommt in den nächsten Tagen ein Update, nach dem dann gängige Akzente auch funktionieren werden (siehe Link meines vorigen Kommentars)
(13 Jan '16, 13:49)
cgnieder
Ergebnis 5 von 9
show 4 more comments
|