
Depois de ver a solução de Andrew Swann para minha pergunta anterior:Como encaixar esta tabela em uma página?Tentei encaixá-lo em outra tabela:
\documentclass[11pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[spanish,mexico]{babel}
\usepackage[T1]{fontenc}
\usepackage{booktabs,longtable}
\usepackage{array}
\begin{document}
{\small\setlength\tabcolsep{5pt}
\begin{tabularx}{\linewidth}{ll*{2}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}}
\caption{Temario de actividades Secundaria} \\
\toprule
\textsc{Horario} & \textsc{Ejercicio} & \textsc{Grado de riesgo} & \textsc{Material}\\
\addlinespace[0.5ex]
\toprule
\addlinespace[2ex]
\endfirsthead
\multicolumn{4}{c}{\textsc{\tablename~\thetable}\enspace (continuación)}\\
\addlinespace[2ex]
\toprule
\textsc{Horario} & \textsc{Ejercicio} & \textsc{Grado de riesgo} & \textsc{Material}\\
\addlinespace[0.5ex]
\toprule
\endhead
\midrule
\multicolumn{4}{r}{Continúa}
\endfoot
\bottomrule
\endlastfoot
{\normalsize Día 1} & Bienvenida Encuadre Tema:Acuerdos de convivencia Ejercicios psicométricos & 1 & Pelota de esponja \emph{Brincón} Ejercicios psicométricos. Guía Eureka (Ver Anexo)\\
\addlinespace
{\normalsize Día 2} & Ejercicios psicométricos & 0 & Ejercicios psicométricos. Guía Eureka\\
\addlinespace
{\normalsize Día 3} & Ejercicios psicométricos & 0 & Ejercicios psicométricos\\
\addlinespace
{\normalsize Día 4} & Examen simulacro de ejercicios psicométricos en equipo & 0 & Ejercicios psicométricos. Guía verde actualizada 2000 (Ver Anexo).\\
\addlinespace
{\normalsize Día 5} & EXAMEN DE CONOCIMIENTOS GENERALES & & \\
\end{tabularx}
}
\end{document}
Bem, essa é a tabela que preciso fazer, mas não tenho certeza de como fazê-la bem. Minha primeira dúvida é em relação ao enunciado da coluna, da minha pergunta anterior e de outras soluções que vi adaptei isso:
\begin{tabularx}{\linewidth}{ll*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}}
Como preciso de 5 colunas, entendo que a tabela possui 3 colunas alinhadas à esquerda, posteriormente outra não justificada (RaggedRight) e uma finalXcoluna, estou certo? Mas não tenho certeza sobre isso. O código ll*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
é difícil de entender para mim, alguém poderia me explicar?
Atualizar
Após os comentários e a resposta fiz algumas correções na tabela, vi que aa coluna não fazia sentido. Mas o layout da mesa é horrível. Como posso consertar isso? Existe uma maneira de listar ou separar o texto em uma célula se eu precisar de uma lista e não de um parágrafo?
Responder1
ll*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
é
ll
duas colunas de entradas de linha única alinhadas à esquerda e, em seguida,
*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
três cópias de>{\RaggedRight\arraybackslash\hspace{0pt}}X
cada uma delas é basicamente uma X
coluna com p{...}
uma largura calculada automaticamente.
Os tokens >{...}
são aplicados no início de cada célula. Neste caso é isso
\RaggedRight\arraybackslash\hspace{0pt}
\RaggedRight
é uma versão melhorada do \raggedright
pacote ragged2e
.
\arraybackslash
é definido nele tabularx
redefine \\
para finalizar a linha da tabela (que são suas definições normais em tabular, mas \ragedright
, \RaggedRight
etc. redefine-a localmente para terminar uma linha de texto irregular, o que não é desejado aqui.
Começar um parágrafo \hspace{0pt}
é um truque antigo para colocar um espaço antes da primeira palavra, o que permite ao TeX hifenizar a primeira palavra do parágrafo. (Caso contrário, o algoritmo de hifenização do TeX não considera a primeira palavra, o que provavelmente é um bug, mas o TeX está congelado e não vai mudar esse comportamento.
Responder2
David Carlisle já respondeu às suas primeiras perguntas. Então tentarei ajudá-lo a resolver outros problemas. Seu MWE tem alguns erros como \caption
depois \begin{tabularx} ...
, mas não tem \end{document}
. E o mais notável, para mim não está claro se você gosta de ter longtabe
(espalhado em mais páginas) ou apenas uma tabela simples em ambiente float. Presumo que o último seja o caso e refaça seu MWE da seguinte forma:
\documentclass[11pt]{book}
\usepackage[utf8]{inputenc}
%\usepackage[spanish,mexico]{babel} i haven't it ..
\usepackage[T1]{fontenc}
\usepackage{ragged2e}
\usepackage{booktabs,tabularx}
\usepackage[labelsep=colon,
labelfont={bf},
justification=raggedright,
singlelinecheck=false]{caption}% added for caption custumization
%% just for shoving test result, erase this two line in final text
\usepackage[active,floats,tightpage]{preview}
\setlength\PreviewBorder{1em}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\begin{document}
\begin{table}
\setlength\tabcolsep{3pt}
\small
\caption{Temario de actividades Secundaria}
\begin{tabularx}{\linewidth}{
c% first column, I change "l" to "c" (matter of taste)
>{\setlength\hsize{1.2\hsize}}L% I make it wider
c% third column, I change it from X to c; Is it really necessary since it is empty?,
% does it should has equal width as second and last column?
>{\setlength\hsize{.6\hsize}}C% I make it narrower
>{\setlength\hsize{1.2\hsize}}L% I make it wider
}
\toprule
Horario % I remove \textsc, for better looking of table
& Ejercicio
& Objetivo
& Grado de riesgo
& Material \\
\midrule
Día 1
& Bienvenida Encuadre Tema: Acuerdos de convivencia Ejercicios psicométricos
& & 1
& Pelota de esponja \emph{Brincón} Ejercicios psicométricos.
Guía Eureka (Ver Anexo) \\
\addlinespace
Día 2
& Ejercicios psicométricos
& & 0
& Ejercicios psicométricos. Guía Eureka \\
\addlinespace
Día 3
& Ejercicios psicométricos
& & 0
& Ejercicios psicométricos \\
\addlinespace
Día 4
& Examen simulacro de ejercicios psicométricos en equipo
& & 0
& Ejercicios psicométricos.
Guía verde actualizada 2000 (Ver Anexo). \\
\addlinespace
Día 5
& Examen de conocimientos generales, gute
& & & \textbullet\ emulation of itemize
environment (to show
possible solutions) \newline
\textbullet\ second item \newline \textbullet\ third item \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
No código adicionei alguns comentários pelos quais tento esclarecer o que estou fazendo e o que está ao lado mencionado não está claro para mim. Como você pode ver, a tabela é colocada no ambiente de tabela, e também sugiro definir um novo tipo de coluna no preâmbulo do documento.
Editar: Iraultza Bellaustegigoitia, quando você começa com o design de tabelas - esta é uma das tarefas mais desafiadoras no uso do LaTeX - você precisa tomar algumas decisões como:
- a tabela caberá em uma página ou será tão grande que ficará quebrada em mais páginas
- a tabela pode flutuar no texto ou não
- a tabela deve ter largura prescrita
Considerando as respostas à pergunta acima, você seleciona o ambiente tabular, por exemplo, tabularx
para tabela em uma página, longtable
para maior. etc. Se você não estiver familiarizado com o pacote selecionado, leia (pelo menos brevemente) a documentação que acompanha o pacote.
No design da mesa, considere algumas regras simples:
- os mais recentes combinam recursos específicos de pacotes diferentes (por exemplo, use a definição de cabeçalho/rodapé de
longtable
intabularx
). As exceções sãoarray
ebooktabs
package, que são projetados para suportar outros pacotes tabulares. - é uma má ideia usar tamanhos de fonte diferentes na tabela
Redesenhei um pouco meu MWE, adicionei um exemplo para emulação simples de listas em células de tabela (para um layout mais exigente sugiro usar alguns pacotes de listas como enumitem
) e adicionei uma nova imagem da tabela gerada por ele. Espero que esteja próximo disso, o que você gostaria de alcançar e que este meu acréscimo te ajude.
Responder3
Bem, depois de lutar o dia todo com esta mesa, e graças às gentis respostas e explicações de David Carlisle e ao truque de Zarco, tenho a mesa exatamente como queria.
O que fiz foi o seguinte:
\documentclass[11pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[spanish,mexico]{babel}
\usepackage[T1]{fontenc}
\usepackage{ragged2e}
\usepackage{array,caption}
\captionsetup{labelfont=sc,textfont=it}
\usepackage{tikz}
\usepackage{ltablex}
\renewcommand{\tabularxcolumn}[1]{>{\small}m{#1}}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{longtable}
\newcolumntype{C}{>{\centering\arraybackslash\hspace{0pt}}X}
\newcolumntype{L}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
\begin{document}
{\small\setlength\tabcolsep{5pt}
\begin{tabularx}{\linewidth}{cLCL} % {lc*{2}L}
\caption{Temario de actividades Secundaria} \\
\toprule
\textsc{Horario} & \textsc{Ejercicio} & \textsc{Grado de riesgo} & \textsc{Material}\\
\addlinespace[0.5ex]
\toprule
\addlinespace[2ex]
\endfirsthead
\multicolumn{4}{c}{\textsc{\tablename~\thetable}\enspace (continuación)}\\
\addlinespace[2ex]
\toprule
\textsc{Horario} & \textsc{Ejercicio} & \textsc{Grado de riesgo} & \textsc{Material}\\
\addlinespace[0.5ex]
\toprule
\endhead
\midrule
\multicolumn{4}{r}{Continúa}
\endfoot
\bottomrule
\endlastfoot
{\normalsize Día 1} & Bienvenida\par Encuadre\par Tema:\par Acuerdos de convivencia\par Ejercicios psicométricos & 1 & Pelota de esponja\par \emph{Brincón}\par Ejercicios psicométricos\par Guía Eureka (Ver Anexo)\\
\addlinespace
{\normalsize Día 2} & Ejercicios psicométricos & 0 & Ejercicios psicométricos. Guía Eureka\\
\addlinespace
{\normalsize Día 3} & Ejercicios psicométricos & 0 & Ejercicios psicométricos\\
\addlinespace
{\normalsize Día 4} & Examen simulacro de ejercicios psicométricos en equipo & 0 & Ejercicios psicométricos. Guía verde actualizada 2000 (Ver Anexo).\\
\addlinespace
{\normalsize Día 5} & \multicolumn{3}{c}{EXAMEN DE CONOCIMIENTOS GENERALES} \\
\addlinespace
{\normalsize Día 6} & Autoconcepto \par Autoestima \par Elaboración de mi propio regalo & 2 & Papel bond\par Plumones\par Pegamento\par Tijeras\par Crayolas \\
\end{tabularx}
}
\end{document}
Meu outro problema era como inscrever o texto em uma célula desta tabela. Não acho que usar um ambiente como itemize
ou enumerate
aninhado dentro tenha sido uma boa ideia, ou seja, não acho que compile corretamente. Muitas vezes é fácil separar o texto usando \\
mas como nas tabelas é a forma como as linhas se distinguem, nenhuma delas pareceu funcionar. No final tentei usar \par
e funcionou, mas não sei se tem jeito melhor.