Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

19 Sep '14, 20:40

Henri's gravatar image

Henri
15.7k133943

Der folgende `expl3` Code definiert `\usepackage` um, sodass die Namen aller Pakete, die über `\usepackage` geladen werden sollen, sowie alle sukzessive gegebenen Optionen, gespeichert werden. Im `\AtBeginDocument` Hook werden die Pakete dann tatsächlich geladen. (Bitte diesen Code nicht benutzen! Der "Option clash" hat schon seine Daseinsberechtigung. Das hier ist nur "Proof of Concept") \documentclass{article} \usepackage{xparse} \ExplSyntaxOn \cs_generate_variant:Nn \str_case:nnTF { nV } \tl_new:N \g_felix_packages_tl \seq_new:N \g_felix_packages_seq \cs_set_eq:NN \felix_saveusepackage:w \felix_saveusepackage:wn \usepackage \cs_new_protected:Npn \felix_usepackage:nn #1#2 { \felix_saveusepackage:w \felix_saveusepackage:wn [ #1 ] { #2 } } \cs_generate_variant:Nn \felix_usepackage:nn { vn } \cs_new_protected:Npn \felix_addpackage:nn #1#2 { \str_case:nVTF { #2 } \g_felix_packages_tl { \tl_gput_right:cn { g_felix_#2_tl } { #1, } } { \tl_new:c { g_felix_#2_tl } \tl_gput_right:cn { g_felix_#2_tl } { #1, } \tl_gput_right:Nn \g_felix_packages_tl { {#2}{} } \seq_gput_right:Nn \g_felix_packages_seq { #2 } } } \cs_new_protected:Npn \felix_loadpackages: { \seq_map_inline:Nn \g_felix_packages_seq { \felix_usepackage:vn { g_felix_##1_tl } { ##1 } } } \RenewDocumentCommand \usepackage { O{} m } { \felix_addpackage:nn { #1 } { #2 } } \AtBeginDocument { \felix_loadpackages: } \ExplSyntaxOff \usepackage{xcolor} \usepackage[dvipsnames]{xcolor} \usepackage[breaklinks]{hyperref} \usepackage[unicode]{hyperref} \begin{document} \end{document}
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

19 Sep '14, 20:40

Henri's gravatar image

Henri
15.7k133943

Der folgende `expl3` Code definiert `\usepackage` um, sodass die Namen aller Pakete, die über `\usepackage` geladen werden sollen, sowie alle sukzessive gegebenen Optionen, gespeichert werden. Im `\AtBeginDocument` Hook werden die Pakete dann tatsächlich geladen. (Bitte diesen Code nicht benutzen! Der "Option clash" hat schon seine Daseinsberechtigung. Das hier ist nur "Proof of Concept") \documentclass{article} \usepackage{xparse} \ExplSyntaxOn \cs_generate_variant:Nn \str_case:nnTF { nV } \tl_new:N \g_felix_packages_tl \seq_new:N \g_felix_packages_seq \cs_set_eq:NN \felix_saveusepackage:w \usepackage \cs_new_protected:Npn \felix_usepackage:vn \felix_usepackage:nn #1#2 { \exp_after:wN \felix_saveusepackage:w \exp_after:wN \felix_saveusepackage:w [ \cs:w #1 \cs_end: ] { #2 } } \cs_generate_variant:Nn \felix_usepackage:nn { vn } \cs_new_protected:Npn \felix_addpackage:nn #1#2 { \str_case:nVTF { #2 } \g_felix_packages_tl { \tl_gput_right:cn { g_felix_#2_tl } { #1, } } { \tl_new:c { g_felix_#2_tl } \tl_gput_right:cn { g_felix_#2_tl } { #1, } \tl_gput_right:Nn \g_felix_packages_tl { {#2}{} } \seq_gput_right:Nn \g_felix_packages_seq { #2 } } } \cs_new_protected:Npn \felix_loadpackages: { \seq_map_inline:Nn \g_felix_packages_seq { \felix_usepackage:vn { g_felix_##1_tl } { ##1 } } } \RenewDocumentCommand \usepackage { O{} m } { \felix_addpackage:nn { #1 } { #2 } } \AtBeginDocument { \felix_loadpackages: } \ExplSyntaxOff \usepackage{xcolor} \usepackage[dvipsnames]{xcolor} \usepackage[breaklinks]{hyperref} \usepackage[unicode]{hyperref} \begin{document} \end{document} --- Wer sich mit `expl3` auskennt kann mir vielleicht sagen, wie ich diese Zeile verbessern kann: \exp_after:wN \felix_saveusepackage:w \exp_after:wN [ \cs:w #1 \cs_end: ] { #2 }\end{document}
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

18 Sep '14, 23:03

Henri's gravatar image

Henri
15.7k133943

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×