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

08 Mai '20, 11:33

cgnieder's gravatar image

cgnieder
22.1k253463

**Antwort für Versionen ab und einschließlich v3.1:** Ganz neue Versionen von `acro` (ab v3.1) patchen die entsprechenden Tabellen-Umgebungen, so dass alles einfach funktionieren sollte ---------- **Ursprüngliche Antwort für Versionen älter als v3.1:** `ltxtable` hat (wie auch einige andere Tabellenarten, u.a. `tabularx` und `tabu`) eine Trial- oder Messphase, währendessen die erste Verwendung der Akronyme stattfindet. Wenn die Tabelle dann letztendlich gesetzt wird, denkt `acro` längst, dass die Akronyme schon mal verwendet würden. Leider kommt das außerhalb der Tabelle nicht an, da wichtige Infos in der aux-Datei fehlen. Idealerweise würde während der Testphase die Sternvariante `\ac*` verwendet und während der Setzphase dann wieder `\ac`. `acro` bietet dafür ab v2.6 den Befehl `\acswitchoff`, den man mit einem geeigneten Patch einsetzen kann: \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 `\acuse{A,B}` direkt nach `\LTXtable{\textwidth}{longTest.tex}`. Das markiert die Akronyme als benutzt und macht auch die gewünschten Einträge in der `aux` Datei. Für eine automatische Lösung kann man `\LTXtable` mit [`etoolbox`](http://www.ctan.org/pkg/etoolbox)' `\patchcmd` patchen um in der Messphase einen Schalter zu setzen, und `\acro_check_and_mark_if:nn` so umdefieren, dass es nichts macht, wenn der Schalter aktiv ist. \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} ![alt text][1] ---------- **Ergänzung:** LTXtable ist nicht die einzige Tabellenvariante, die ihren Inhalt mehrmals setzt (um die Breite etc zu bestimmen), andere sind zum Beispiel `tabularx` und `tabu`. `tabu` hat ein offizielles Interface um Code während der Testphase zu ändern. `tabularx` setzt während der Testphase `\let\hbadness\@tempcnta`, worauf man testen kann. Folgender Code (Für `acro` v2.0 und größer) ermöglicht die Verwendung mit allen drei Tabellen: \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 [1]: http://texwelt.de/wissen/upfiles/acro_6.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 9

22 Jul '16, 14:13

cgnieder's gravatar image

cgnieder
22.1k253463

`ltxtable` hat (wie auch einige andere Tabellenarten, u.a. `tabularx` und `tabu`) eine Trial- oder Messphase, währendessen die erste Verwendung der Akronyme stattfindet. Wenn die Tabelle dann letztendlich gesetzt wird, denkt `acro` längst, dass die Akronyme schon mal verwendet würden. Leider kommt das außerhalb der Tabelle nicht an, da wichtige Infos in der aux-Datei fehlen. Idealerweise würde während der Testphase die Sternvariante `\ac*` verwendet und während der Setzphase dann wieder `\ac`. `\ac`. `acro` bietet dafür ab v2.6 den Befehl `\acswitchoff`, den man mit einem geeigneten Patch einsetzen kann: \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 `\acuse{A,B}` direkt nach `\LTXtable{\textwidth}{longTest.tex}`. Das markiert die Akronyme als benutzt und macht auch die gewünschten Einträge in der `aux` Datei. Für eine automatische Lösung kann man `\LTXtable` mit [`etoolbox`](http://www.ctan.org/pkg/etoolbox)' `\patchcmd` patchen um in der Messphase einen Schalter zu setzen, und `\acro_check_and_mark_if:nn` so umdefieren, dass es nichts macht, wenn der Schalter aktiv ist. \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} ![alt text][1] ---------- **Ergänzung:** LTXtable ist nicht die einzige Tabellenvariante, die ihren Inhalt mehrmals setzt (um die Breite etc zu bestimmen), andere sind zum Beispiel `tabularx` und `tabu`. `tabu` hat ein offizielles Interface um Code während der Testphase zu ändern. `tabularx` setzt während der Testphase `\let\hbadness\@tempcnta`, worauf man testen kann. Folgender Code (Für `acro` v2.0 und größer) ermöglicht die Verwendung mit allen drei Tabellen: \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 [1]: http://texwelt.de/wissen/upfiles/acro_6.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 8

03 Jun '16, 11:02

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 7

03 Jun '16, 10:54

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 6

03 Jun '16, 09:30

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 5

03 Jun '16, 09:25

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 4
Patch auf v2.* anpassen

03 Jun '16, 08:54

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

21 Sep '13, 17:17

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

20 Sep '13, 16:02

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

19 Sep '13, 23:59

cgnieder's gravatar image

cgnieder
22.1k253463