**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