在看到 Andrew Swann 对我之前的问题的解决方案后:如何将该表格放入页面中?我尝试将其放入另一张表中:
\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),最后一个X列,我说得对吗?但我不确定。中的代码ll*{3}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
对我来说很难理解,有人能解释一下吗?
更新
在评论和回答之后,我在表格中做了一些更正,我发现 aa 列没有意义。但表格的布局很糟糕。我该如何修复它?如果我需要列表而不是段落,有没有办法列出或分隔单元格中的文本?
答案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
David Carlisle 已经回答了您的第一个问题。因此,我将尝试帮助您解决其他问题。您的 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
好吧,在为这张表格奋斗了一整天之后,感谢 David Carlisle 和 Zarco 技巧的友好回复和解释,我得到了我想要的表格。
我做了以下事情:
\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
并且成功了,但我不知道是否还有更好的方法。