newenvironment und xltabular

Tabellen und Grafiken erstellen und anordnen


godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

newenvironment und xltabular

Beitrag von godi »

Hallo,
ich möchte xltabular in newenvironment einsetzen.

Leider wird dann der End-Teil von newenvironment ignoriert.
Beispiel:

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{xltabular}

% Funktioniert leider nicht => Error
\newenvironment{MyXLTabular}{%
\begin{xltabular}{\linewidth}{|X|}
\hline
}
{
Sonstiges\\ 
\hline
\end{xltabular}
}

% Endbereich wird ignoriert.
\newenvironment{MyXLTabular2}{%
\xltabular{\linewidth}{|X|}
\hline
}
{
Sonstiges\\  % Sonstiges und hline werden nicht dargestellt
\hline
\endxltabular
}
  
\begin{document}
\begin{MyXLTabular2}
MyXLTabular\\
\end{MyXLTabular2}

\end{document}
Weiß jemand wie dies funktionieren könnte, bzw hat Tipps für mich?

godi

Gast

Beitrag von Gast »

Diese Problematik wird bereits in der Anleitung zu tabularx behandelt (derzeit auf Seite 4). Bei xltabular ist die Problematik noch verstärkt. Im konkreten Beispiel ist natürlich xltabular gar nicht notwendig. Hier würde longtable vollkommen ausreichen:

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{longtable}

\newenvironment{MyXLTabular}{%
\longtable{|p{\dimexpr \textwidth-2\tabcolsep\relax}|}
\hline
}
{
Sonstiges\\  % Sonstiges und hline werden nicht dargestellt
\hline
\endlongtable
}

\begin{document}
\begin{MyXLTabular}
MyXLTabular\\
\end{MyXLTabular}

\end{document}
Wobei man bei einer longtable Anfang und Ende eigentlich per \endfirsthead und \endlastfoot bereits am Anfang der Tabelle definiert:

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{longtable}

\newenvironment{MyXLTabular}{%
  \longtable{|p{\dimexpr \textwidth-2\tabcolsep\relax}|}
  \hline
  \endfirsthead
  Sonstiges\\
  \hline
  \endlastfoot
}{%
  \endlongtable
}

\begin{document}
\begin{MyXLTabular}
MyXLTabular\\
\end{MyXLTabular}

\end{document}
Und das bringt und dann darauf, wie man das auch bei xltabular[/x] korrekt löst: [code]\documentclass{scrartcl}
\usepackage{xltabular}

\newenvironment{MyXLTabular}{%
\xltabular{\linewidth}{|X|}
\hline
\endfirsthead
Sonstiges\\
\hline
\endlastfoot
}{%
\endxltabular
}

\begin{document}
\begin{MyXLTabular}
MyXLTabular\\
\end{MyXLTabular}

\end{document}[/code]
Es kommt also eigentlich nur darauf an, die Umgebung auch wirklich als mehrseitige Tabelle, bestehend aus: Tabellenkopf, Tabelleninhalt und Tabellenfuß, zu betrachten und dann korrekt entsprechend zu verwenden.

godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag von godi »

Hallo,
Herzlichen Dank!

Hat mir sehr weitergeholfen => funktioniert jetzt.

Dadurch habe ich in der Anleitung auch noch was gefunden wie bei jedem Seitenumbruch ein Header + "Fortsetzung" eingefügt werden kann:

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{xltabular}
\usepackage{forloop}

\newenvironment{MyXLTabular}{%
\xltabular{\linewidth}{|X|}
\hline
Kopfzeile\\
\hline
\endfirsthead
\multicolumn{1}{@{}l}{\ldots\ \small Fortsetzung}\\
\hline
Kopfzeile2\\
\hline
\endhead
\hline
\multicolumn{1}{r@{}}{\small Fortsetzung\ldots}\\
\endfoot
\hline
\endlastfoot
}
{
\endxltabular
}
  
\begin{document}

\newcounter{ct}
\begin{MyXLTabular}
\forloop{ct}{1}{\value{ct} < 100}{Zeile \thect\\}%
Row \thect
\end{MyXLTabular}

\end{document}

Gast

Beitrag von Gast »

Ich empfehle übrigens, dir beim Schreiben von LaTeX-Code von vornherein einen Stil anzugewöhnen, bei dem unerwünschte Leerzeichen beispielsweise durch nicht auskommentierten Zeilenenden nach { oder } ausgeschlossen sind und bei der durch Einrückung die einzelnen Argumente oder Gruppen leichter erkennbar sind.

Antworten