
Ich brauche kompakte Listen in einer Tabellenumgebung. Ich brauche die tabulary
Umgebung für Tabellen und verwende itemize
Optionen für die Listen.
Bei meinen Versuchen kommt die Fehlermeldung „Etwas stimmt nicht – möglicherweise fehlt \item.“
Das folgende MWE reproduziert das Problem. Ich habe gerade alle Pakete in MikTeX (unter Windows) aktualisiert.
\documentclass{article}
\usepackage{tabulary}
\begin{document}
\begin{tabulary}{\linewidth}{L L}
test & \begin{itemize} \item table item 1 \end{itemize} \\
\end{tabulary}
\end{document}
Wie bereits erwähnt, funktioniert der obige Code, wenn die itemize
-Umgebung in eine minipage
Umgebung eingeschlossen wird.
Um Zeit und Platz zu sparen, habe ich eine compactitemt
Umgebung erstellt, um automatisch einzuschließen itemize
. minipage
Dies führte zunächst zu einem Fehler, aber die Neudefinition der Umgebung wie im folgenden Code funktioniert jetzt.
\documentclass{scrbook}
\usepackage[inline]{enumitem}
\usepackage{tabulary}
\newenvironment{compactitemt}{
\begin{minipage}[t]{\hsize}\begin{itemize}[nosep, wide=0pt]
}{ \end{itemize}\end{minipage} }
\begin{document}
\begin{tabulary}{\linewidth}{| J | J |}
other column &
top line 1
\begin{compactitemt}
\item table item 1
\end{compactitemt}
bottom line 1
\\
\end{tabulary}
\end{document}
Das Endziel besteht darin, gleichmäßig verteilte J
Spalten mit Listen zu haben, wie diese:
Ideal wäre es gewesen, wenn im obigen Beispiel die zweite Spalte nur so breit wäre wie der Text darin, wenn der Text so kurz ist, dass es keine Zeilenumbrüche gibt, aber ich glaube, ich kann damit umgehen, indem ich tabularx
und dann die l
Spalte manuell verwende, wenn die Tabelle so klein ist, dass sie weniger als eine Zeile breit sein sollte.
Antwort1
tabulary
verwendet den H-Modus, um zu messen, wie viele Daten jede Zelle enthält. Dies bedeutet, dass vertikale Konstrukte wie Listen nicht funktionieren. Es sorgt lokal für \[
Sicherheit während der Versuche (fungiert als $
, aber sonst nichts). Eine sehr einfache Änderung für Itemixe wäre wie unten, aber die Ausgabe ist nicht so toll. Ich würde einen Normalwert verwenden tabular
und die Breite der p{...}
Spalte manuell wählen.
\documentclass{article}
\usepackage{tabulary}
\makeatletter
\def\TY@list#1#2{%
\renewcommand\item[1][]{ }%
}
\def\TY@tab{%
\setbox\z@\hbox\bgroup
\let\[$\let\]$%
% new bit to make itemize safe
\let\list\TY@list
\let\enditemize\relax
\let\endlist\relax
% end change
\let\equation$\let\endequation$%
\col@sep\tabcolsep
\let\d@llarbegin\begingroup\let\d@llarend\endgroup
\let\@mkpream\TY@mkpream
\def\multicolumn##1##2##3{\multispan##1\relax}%
\CT@start\TY@tabarray}
\makeatother
\begin{document}
\centering
\begin{tabulary}{\linewidth}{L L}
test &
\begin{itemize}
\item table item 1
\end{itemize}
\\
\end{tabulary}
\end{document}