
Посмотрите решение Эндрю Суонна на мой предыдущий вопрос:Как разместить эту таблицу на странице?Я попытался втиснуть это в другую таблицу:
\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}
Ну, вот таблица, которую мне нужно сделать, но я не уверен, как это сделать хорошо. Мои первые сомнения касаются оператора столбца, из моего предыдущего вопроса и других решений, которые я видел, я адаптировал это:
\begin{tabularx}{\linewidth}{ll*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}}
Поскольку мне нужно 5 столбцов, я понимаю, что таблица имеет 3 выровненных по левому краю столбца, затем еще один не выровненный (RaggedRight) и последнийИксколонка, я прав? Но я не уверен. Код в ll*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
мне трудно понять, может кто-нибудь объяснить?
Обновлять
После комментариев и ответа я сделал несколько исправлений в таблице, я увидел, что столбец не имеет смысла. Но макет таблицы ужасен. Как это исправить? Есть ли способ перечислить или разделить текст в ячейке, если мне нужен список, а не абзац?
решение1
ll*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
является
ll
два столбца однострочных записей, выровненных по левому краю, затем
*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
три копии>{\RaggedRight\arraybackslash\hspace{0pt}}X
каждый из них по сути является X
столбцом, ширина которого p{...}
рассчитывается автоматически.
Маркеры в >{...}
применяются к началу каждой ячейки. В данном случае это
\RaggedRight\arraybackslash\hspace{0pt}
\RaggedRight
является улучшенной версией \raggedright
из ragged2e
пакета.
\arraybackslash
определен в tabularx
нем, переопределяет его \\
для завершения строки таблицы (что является его обычным определением в табличном виде, но \ragedright
и \RaggedRight
т. д. переопределяет его локально, чтобы сделать конец строки текста неровным, что здесь нежелательно).
Начинать абзац с пробела \hspace{0pt}
— старый трюк, позволяющий TeX переносить первое слово в абзаце. (В противном случае алгоритм переноса TeX не учитывает первое слово, что, вероятно, является ошибкой, но TeX заморожен и не собирается менять это поведение.)
решение2
Дэвид Карлайл уже ответил на ваши первые вопросы. Поэтому я постараюсь помочь вам решить другие проблемы. В вашем MWE есть некоторые ошибки, например , \caption
после \begin{tabularx} ...
, а не \end{document}
. И самое примечательное, мне не ясно, хотите ли вы иметь longtabe
(распространение на большую страницу) или просто простую таблицу в плавающей среде. Я предполагаю, что последний случай имеет место, и переделаю ваш MWE следующим образом:
\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}
В коде я добавил несколько комментариев, с помощью которых я пытаюсь прояснить, что я делаю, а что еще не упомянуто, мне не ясно. Как вы видите, таблица помещена в окружение таблиц, и я также предлагаю определить новый тип столбца в преамбуле документа.
Редактировать: Ираулца Беллаустегигоития, когда вы начинаете проектировать таблицы (это одна из самых сложных задач при использовании LaTeX), вам необходимо принять некоторые решения, такие как:
- поместится ли таблица на одной странице или она настолько большая, что будет разбита на несколько страниц
- может ли таблица плавать в тексте или нет
- таблица должна иметь предписанную ширину
Учитывая ответы на поставленные выше вопросы, вы выбираете табличную среду, например, tabularx
для таблицы на одной странице, longtable
для более крупной и т. д. Если вы не знакомы с выбранным пакетом, прочтите (хотя бы кратко) документацию, которая прилагается к пакету.
При оформлении таблицы учитывайте несколько простых правил:
- более новые смешивают определенные возможности разных пакетов (например, используют определение заголовка/футера из
longtable
)tabularx
. Исключениями являютсяarray
иbooktabs
пакет, которые разработаны для поддержки других табличных пакетов. - плохая идея использовать разные размеры шрифтов в таблице
Я немного переделал свой MWE, добавил пример для простой эмуляции списков в ячейке таблицы (для более сложной компоновки я предлагаю использовать некоторые пакеты списков, такие как enumitem
) и добавил новую картинку генерации таблицы с его помощью. Надеюсь, что это близко к тому, чего вы хотели бы добиться, и что это мое дополнение вам поможет.
решение3
Ну что ж, после целого дня мучений с этим столом, а также благодаря любезным ответам и объяснениям Дэвида Карлайла и трюку Зарко, у меня есть стол, который я хотел.
Я сделал следующее:
\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}
Моя другая проблема заключалась в том, как включить текст в ячейку этой таблицы. Я не думаю, что использование окружения типа itemize
или enumerate
вложенного внутри было хорошей идеей, то есть, я не думаю, что это правильно компилируется. Во многих случаях легко разделить текст с помощью , \\
но так как в таблицах строки различаются, ни один из них, похоже, не сработал. В конце концов я попробовал использовать , \par
и это сработало, но я не знаю, есть ли способ лучше.