Ich benutze das Pakte
gefragt 19 Sep '13, 23:48 Bettina |
Antwort für Versionen ab und einschließlich v3.1: Ganz neue Versionen von Ursprüngliche Antwort für Versionen älter als v3.1:
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} \usepackage{acro}[2016/07/20] % v2.6 is needed for \acswitchoff \usepackage{longtable,ltxtable,tabu,tabularx,etoolbox,filecontents} \acsetup{ list-style = longtable , list-name = Abkürzungsverzeichnis } \DeclareAcronym{a}{ short = aa , long = AAAAAAA } \DeclareAcronym{b}{ short = bb , long = BBBBBBB } \DeclareAcronym{c}{ short = cc , long = CCCCCCC } \DeclareAcronym{d}{ short = dd , long = DDDDDDD } % ltxtable: \patchcmd\LTXtable {\input} {\acswitchoff\input} {} {} % tabularx: \makeatletter \patchcmd\TX@trial {\let\hbadness\@tempcnta} {\acswitchoff\let\hbadness\@tempcnta} {} {} \makeatother % tabu: \providecommand\tabuDisableCommands[1]{} \tabuDisableCommands{\acswitchoff} \begin{document} \ac{a} \begin{filecontents}{mytable.tex} \begin{longtable}{l} \ac{b} \end{longtable} \end{filecontents} \LTXtable{\textwidth}{mytable.tex} \begin{tabularx}{5cm}{X} \ac{c} \end{tabularx} \begin{tabu}{X} \ac{d} \end{tabu} \printacronyms \end{document} Für Versionen älter als v2.6: Der einfachste Workaround: benutze Für eine automatische Lösung kann man \documentclass{article} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} \usepackage{acro,longtable,ltxtable,etoolbox,filecontents} \acsetup{ list-style = longtable , list-name = Abkürzungsverzeichnis } \DeclareAcronym{a}{ short = aa , long = AAAAAAA } \DeclareAcronym{b}{ short = bb , long = BBBBBBB } \makeatletter % \LTXtable patchen: \newif\iftable@measuring % in der Messphase \table@measuring auf wahr setzen: \patchcmd\LTXtable {\input} {\table@measuringtrue\input} {} {} % used flag nicht setzen, wenn wir in \LTXtables Messphase sind: \ExplSyntaxOn \cs_set_protected:Npn \acro_check_and_mark_if:nn #1#2 { \iftable@measuring \acro_check_acronym:nn {#2} {false} % entspricht Sternvariante \else \bool_if:nTF {#1} { \acro_check_acronym:nn {#2} {false} } { \acro_check_acronym:nn {#2} {true} } \fi } \ExplSyntaxOff \makeatother \begin{document} \ac{a} \begin{filecontents}{mytable.tex} \begin{longtable}{l} \ac{b} \end{longtable} \end{filecontents} \LTXtable{\textwidth}{mytable.tex} \printacronyms \end{document} Ergänzung: LTXtable ist nicht die einzige Tabellenvariante, die ihren Inhalt mehrmals setzt (um die Breite etc zu bestimmen), andere sind zum Beispiel \makeatletter % LTXtable patch damit wir auf die Messphase testen können: \newif\iftable@measuring \patchcmd\LTXtable {\input} {\table@measuringtrue\input} {} {} \ExplSyntaxOn \prg_new_conditional:Npnn \acro_tex_if:nn #1#2 {p,T,F,TF} { \use:c { if #1 } #2 \prg_return_true: \else: \prg_return_false: \fi: } \cs_set_protected:Npn \acro_check_and_mark_if:nn #1#2 { \bool_if:nTF { #1 || \acro_tex_if_p:nn {table@measuring} {} || % LTXtable \acro_tex_if_p:nn {x} {\hbadness\@tempcnta} % tabularx } { \acro_check_acronym:nn {#2} {false} } { \acro_check_acronym:nn {#2} {true} } } % tabu: \providecommand\tabuDisableCommands[1]{} \tabuDisableCommands { \cs_set_protected:Npn \acro_check_and_mark_if:nn #1#2 { \acro_check_acronym:nn {#2} {false} } } \ExplSyntaxOff \makeatother beantwortet 19 Sep '13, 23:59 cgnieder @Clemens Anbei ein virtueller Danke-Punkt. Tolle Erklärung! Macht es nicht Sinn, diesen Patch direkt in dein Paket zu integrieren und ihn bei den Optionen auswhählbar (z.B.
(22 Jul '16, 15:46)
dzaic
@Clemens: Eine Kiste Bier ist hiermit versprochen :-)
(11 Mai '20, 12:46)
dzaic
|