
Necesito tener listas compactas en un entorno de mesa. Necesito el tabulary
entorno para tablas y lo estoy usando itemize
con opciones para las listas.
Mis intentos devuelven el error "Algo anda mal, tal vez falta un elemento".
El siguiente MWE replica el problema. Acabo de actualizar todos los paquetes en MikTeX (en Windows).
\documentclass{article}
\usepackage{tabulary}
\begin{document}
\begin{tabulary}{\linewidth}{L L}
test & \begin{itemize} \item table item 1 \end{itemize} \\
\end{tabulary}
\end{document}
Como se señaló, el código anterior funciona cuando se envuelve el itemize
entorno en un minipage
entorno.
Para ahorrar tiempo y espacio, he creado un compactitemt
entorno para ajustarlo itemize
automáticamente minipage
. Inicialmente, esto dio un error, pero ahora funciona la redefinición del entorno como en el siguiente código.
\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}
El objetivo final es tener J
columnas espaciadas uniformemente que contengan listas, como estas:
Hubiera sido ideal si, en el ejemplo anterior, la segunda columna fuera tan ancha como el texto interior si el texto es tan corto que no hay saltos de línea, pero creo que puedo solucionar esto usando manualmente tabularx
y luego la l
columna, cuando la tabla es tan pequeña que debería tener menos de una línea de ancho.
Respuesta1
tabulary
usa hmode para medir cuántos datos hay en cada celda, esto significa que las construcciones verticales como las listas no funcionan. lo hace seguro localmente \[
durante las pruebas (actuando como $
nada más. Una modificación muy básica para itemixe sería la siguiente, pero el resultado no es tan bueno. Usaría un normal tabular
y elegiría el ancho de la p{...}
columna a mano.
\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}