
Preciso ter listas compactas em um ambiente de tabela. Preciso do tabulary
ambiente para tabelas e estou usando itemize
com opções para as listas.
Minhas tentativas retornam o erro "Algo está errado - talvez esteja faltando um \item".
O seguinte MWE replica o problema. Acabei de atualizar todos os pacotes no MikTeX (no 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 foi apontado, o código acima funciona ao agrupar o itemize
-environment em um minipage
ambiente.
Para economizar tempo e espaço, criei um compactitemt
ambiente para envolver automaticamente itemize
o minipage
. Inicialmente, isso gerou um erro, mas a redefinição do ambiente como no código a seguir agora está funcionando.
\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}
O objetivo final é ter J
colunas com espaçamento uniforme que contenham listas, como esta:
Teria sido ideal se, no exemplo acima, a segunda coluna fosse tão larga quanto o texto dentro, se o texto fosse tão curto que não houvesse quebras de linha, mas acredito que posso lidar com isso manualmente usando tabularx
e então coluna l
, quando a tabela é tão pequena que deveria ter menos de uma linha de largura.
Responder1
tabulary
usa hmode para medir a quantidade de dados de cada célula, isso significa que construções verticais, como listas, não funcionam. ele torna localmente \[
seguro durante os testes (agindo como $
nada mais. Uma modificação muito básica para itemixe seria como abaixo, mas a saída não é tão boa. Eu usaria um normal tabular
e escolheria a largura da p{...}
coluna manualmente.
\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}