von Gast » Mi 28. Aug 2019, 18:57
Es ist übrigens kein großes Problem das acro-list Template tabe aus
acro zu einem Template zu erweitern, das für tabularx oder xltabular geeignet ist:
\documentclass[10pt,
paper=a5,
ngerman,
]{scrreprt}
\usepackage{babel}
\usepackage[utf8]{inputenc}% nur bei veralteten TeX-Distributionen wie auf Overleaf notwendig
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage[sort=true]{acro}
\usepackage{xltabular}
\ExplSyntaxOn
\dim_new:N \l__acro_list_table_width_dim
\DeclareTemplateInterface {acro-list} {xtable} {2}
{
table : tokenlist = tabularx ,
table-spec : tokenlist = @{}lX@{} ,
foreign-sep : tokenlist = {~} ,
reverse : boolean = false ,
before : tokenlist = ,
after : tokenlist = ,
width : length = \linewidth
}
\DeclareTemplateCode {acro-list} {xtable} {2}
{
table = \l__acro_list_table_tl ,
table-spec = \l__acro_list_table_spec_tl ,
foreign-sep = \l__acro_foreign_sep_tl ,
reverse = \l__acro_list_reverse_long_extra_bool ,
before = \l__acro_list_before_tl ,
after = \l__acro_list_after_tl ,
width = \l__acro_list_table_width_dim ,
}
{
\AssignTemplateKeys
\acro_activate_hyperref_support:
\bool_if:NTF \l__acro_list_reverse_long_extra_bool
{
\cs_set_protected:Npn \acro_print_list_entry:nnnn ##1##2##3##4
{ ##1 & ##3 ##2 ##4 \tabularnewline }
}
{
\cs_set_protected:Npn \acro_print_list_entry:nnnn ##1##2##3##4
{ ##1 & ##2 ##3 ##4 \tabularnewline }
}
\acro_build_list_entries:Nnn \l__acro_list_entries_tl {#1} {#2}
\use:x
{
\exp_not:V \l__acro_list_before_tl
\exp_not:N \begin { \exp_not:V \l__acro_list_table_tl }
{ \exp_not:V \l__acro_list_table_width_dim }
{ \exp_not:V \l__acro_list_table_spec_tl }
\exp_not:V \l__acro_list_entries_tl
\exp_not:N \end { \exp_not:V \l__acro_list_table_tl }
\exp_not:V \l__acro_list_after_tl
}
}
\DeclareAcroListStyle { tabularx } { xtable }
{ table = tabularx }
\DeclareAcroListStyle { xltabular } { xtable }
{ table = xltabular }
\ExplSyntaxOff
\DeclareAcroListStyle{xltabularbf}{xtable}{%
table = xltabular,
table-spec = @{}>{\bfseries}lX@{}
}
\acsetup{list-style = xltabularbf,
list-heading = addchap}
\DeclareAcronym{c}{
short = C,
long = Der Buchstabe C
}
\begin{document}
\printacronyms
\clearpage
\ac*{c}
\end{document}
Der Code zwischen ExplSyntaxOn und ExplSyntaxOff ist größtenteils den entsprechenden Anweisungen für das Template table aus acro.sty entnommen. Es wurde lediglich um die Variable width für die gewünschte Breite der Tabelle erweitert. Entsprechend wurde tabular durch tabularx und longtable durch xltabular ersetzt. Außerdem wurde table-spec geändert und verwendet nun eine X-Spalte statt einer p-Spalte und wurde auch gleich um @{} ergänzt.
Es ist übrigens kein großes Problem das [tt]acro-list[/tt] Template [tt]tabe[/tt] aus [p]acro[/p] zu einem Template zu erweitern, das für [tt]tabularx[/tt] oder [tt]xltabular[/tt] geeignet ist: [code]\documentclass[10pt,
paper=a5,
ngerman,
]{scrreprt}
\usepackage{babel}
\usepackage[utf8]{inputenc}% nur bei veralteten TeX-Distributionen wie auf Overleaf notwendig
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage[sort=true]{acro}
\usepackage{xltabular}
\ExplSyntaxOn
\dim_new:N \l__acro_list_table_width_dim
\DeclareTemplateInterface {acro-list} {xtable} {2}
{
table : tokenlist = tabularx ,
table-spec : tokenlist = @{}lX@{} ,
foreign-sep : tokenlist = {~} ,
reverse : boolean = false ,
before : tokenlist = ,
after : tokenlist = ,
width : length = \linewidth
}
\DeclareTemplateCode {acro-list} {xtable} {2}
{
table = \l__acro_list_table_tl ,
table-spec = \l__acro_list_table_spec_tl ,
foreign-sep = \l__acro_foreign_sep_tl ,
reverse = \l__acro_list_reverse_long_extra_bool ,
before = \l__acro_list_before_tl ,
after = \l__acro_list_after_tl ,
width = \l__acro_list_table_width_dim ,
}
{
\AssignTemplateKeys
\acro_activate_hyperref_support:
\bool_if:NTF \l__acro_list_reverse_long_extra_bool
{
\cs_set_protected:Npn \acro_print_list_entry:nnnn ##1##2##3##4
{ ##1 & ##3 ##2 ##4 \tabularnewline }
}
{
\cs_set_protected:Npn \acro_print_list_entry:nnnn ##1##2##3##4
{ ##1 & ##2 ##3 ##4 \tabularnewline }
}
\acro_build_list_entries:Nnn \l__acro_list_entries_tl {#1} {#2}
\use:x
{
\exp_not:V \l__acro_list_before_tl
\exp_not:N \begin { \exp_not:V \l__acro_list_table_tl }
{ \exp_not:V \l__acro_list_table_width_dim }
{ \exp_not:V \l__acro_list_table_spec_tl }
\exp_not:V \l__acro_list_entries_tl
\exp_not:N \end { \exp_not:V \l__acro_list_table_tl }
\exp_not:V \l__acro_list_after_tl
}
}
\DeclareAcroListStyle { tabularx } { xtable }
{ table = tabularx }
\DeclareAcroListStyle { xltabular } { xtable }
{ table = xltabular }
\ExplSyntaxOff
\DeclareAcroListStyle{xltabularbf}{xtable}{%
table = xltabular,
table-spec = @{}>{\bfseries}lX@{}
}
\acsetup{list-style = xltabularbf,
list-heading = addchap}
\DeclareAcronym{c}{
short = C,
long = Der Buchstabe C
}
\begin{document}
\printacronyms
\clearpage
\ac*{c}
\end{document}
[/code]
Der Code zwischen [tt]ExplSyntaxOn[/tt] und [tt]ExplSyntaxOff[/tt] ist größtenteils den entsprechenden Anweisungen für das Template [tt]table[/tt] aus [tt]acro.sty[/tt] entnommen. Es wurde lediglich um die Variable [tt]width[/tt] für die gewünschte Breite der Tabelle erweitert. Entsprechend wurde [tt]tabular[/tt] durch [tt]tabularx[/tt] und [tt]longtable[/tt] durch [tt]xltabular[/tt] ersetzt. Außerdem wurde [tt]table-spec[/tt] geändert und verwendet nun eine [tt]X[/tt]-Spalte statt einer [tt]p[/tt]-Spalte und wurde auch gleich um [tt]@{}[/tt] ergänzt.