TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

Ich benutze das Pakte acro innerhalb von ltxtable. Wenn ich den Befehl \acl{} benutze, taucht auch die gewünschte lange Form der Abkürzung in der Tabelle auf, allerdings leider nicht im Abkürzungsverzeichnis. Dieses Verhalten tritt nicht bei den normalen longtables auf. alt text

\documentclass{article}
\usepackage{longtable, ltxtable, booktabs}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä}, germandbls={ß}, Euro={€}}

\usepackage[ngerman]{babel}
\usepackage{acro}[2013/09/02]
\usepackage{filecontents}% Damit können filecontents-Umgebungen auch im Dokument
                         % stehen, was für ltxtable sehr praktisch ist.

\DeclareAcronym{A}{
  short = A,
  long  = AAAAAAA}

\DeclareAcronym{B}{
  short = B,
  long  = BBBBBB}

\begin{document}

\tableofcontents

\acsetup{
  list-type    = table ,
  list-style   = longtable ,
  list-heading = section* ,
  list-table-width = \textwidth-4\tabcolsep-6em
}

\section{ltxtable}

\begin{filecontents}{longTest.tex}
\begin{longtable}{lrXp{2cm}}
\caption{log}\label{tab:log2}\\ 
\toprule
Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4\\             
\midrule
\endfirsthead
\caption[]{log \small(Fortsetzung)}\\
\toprule
Spalte 1 & Spalte 2 & Spalte 3 & Spalte 4\\
\midrule
\endhead
\midrule
\endfoot 
\bottomrule
\endlastfoot 
\acl{A}\\
\acl{B}\\
\end{longtable}
\end{filecontents}
\LTXtable{\textwidth}{longTest.tex}

\printacronyms[name=\section{Abkürzungsverzeichnis}]

\end{document}

gefragt 19 Sep '13, 23:48

Bettina's gravatar image

Bettina
66571923
Akzeptiert-Rate: 25%

bearbeitet 20 Sep '13, 14:27


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:

Open in Online-Editor
\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' \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.

Open in Online-Editor
\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


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:

Open in Online-Editor
\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
Permanenter link

beantwortet 19 Sep '13, 23:59

Clemens's gravatar image

Clemens
20.7k163463
Akzeptiert-Rate: 61%

bearbeitet 22 Jul '16, 14:13

@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. \usepackage[patchXtables]{acro}) zu machen?

(22 Jul '16, 15:46) dzaic
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×9
×3

gestellte Frage: 19 Sep '13, 23:48

Frage wurde gesehen: 6,707 Mal

zuletzt geändert: 22 Jul '16, 15:49