我在 TeX 中有一个下表。
\begin{table}[!ht]
\centering \footnotesize
\caption{Schedule and Milestones}
\begin{tabular}{|p{.4in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|p{.2in}|}
\hline
\textbf{Phase1} \\ \hline
Month & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 \\ \hline
Milestones & & & & & & Software Delivery & & & & & & Software Delivery & & & & & & Software Delivery \\ \hline
Tasks & U1U2E1E2 & U1,U2,E1,E2 & U1,U2,E1,E2 & U1,U2,E1,E2 & U1,U2,E1,E2,E4 & U1,U2,E1,E2,E4 & U1,U2,E1,E2 & U1,U2,E1,E2 & U1,U2,E1,E2 & U1,U2,U3,E1,E2,E3 & U1,U2,E1,E2,E4 & U1,U2,E1,E2,E4 & U1,U2,E1,E2 & U1,U2,E1,E2 & U1,U2,E1,E2 & U1,U2,U3,E1,E2,E3 & U1,U2,E1,E2,E4 & U1,U2,E1,E2,E4 \\
\hline
\end{tabular}
\label{Schedule}
\end{table}
尽管将大小定义为p{.2in}
,但列内的文本超出了边界。任务行中的文本不可见且超出了边界。为什么会这样?!此外,我可以使用哪些其他选项来使表格内容更具可读性?
答案1
我建议您执行以下操作:
以横向模式排版表格,例如,通过加载
rotating
包并使用其sidewaystable
环境。在“任务”行中的每个逗号后插入空格,以便根据需要插入换行符。(实际上,我认为逗号甚至没有必要;只需提供空格...)
使用 LuaLaTeX 而不是 pdfLaTeX 来编译代码:LuaLaTeX 会对段落中的第一个单词进行连字符处理,而 pdfLaTeX 则不会。这对于单词“Milestones”和“Software”很重要。
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec,rotating}
\begin{document}
\begin{sidewaystable}[!ht]
\centering \footnotesize
\caption{Schedule and Milestones} \label{Schedule}
\begin{tabular}{| p{.4in} *{18}{|p{.2in}} |}
\hline
\textbf{Phase1} \\
\hline
Month & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 \\
\hline
Milestones & & & & & & Software Delivery & & & & & & Software Delivery & & & & & & Software Delivery \\
\hline
Tasks & U1, U2, E1, E2 & U1, U2, E1, E2 & U1, U2, E1, E2 & U1, U2, E1, E2 & U1, U2, E1, E2, E4 & U1, U2, E1, E2, E4 & U1, U2, E1, E2 & U1, U2, E1, E2 & U1, U2, E1, E2 & U1, U2, U3, E1, E2, E3 & U1, U2, E1, E2, E4 & U1, U2, E1, E2, E4 & U1, U2, E1, E2 & U1, U2, E1, E2 & U1, U2, E1, E2 & U1, U2, U3, E1, E2, E3 & U1, U2, E1, E2, E4 & U1, U2, E1, E2, E4 \\
\hline
\end{tabular}
\end{sidewaystable}
\end{document}
附录:虽然第一批代码可能会以最小的方式使表“工作”,但肯定可以进一步改进:
为了通过更“开放”的表格外观实现更好的可读性,删除所有垂直线并
\hline
用包的宏替换booktabs
:\toprule
,,,和。将单词“Month”移动到月份数字上方(而不是左侧)的位置\midrule
。\cmidrule
\bottomrule
使用环境自动利用全部可用宽度。对表格的第 2 列至第 19 列
tabularx
使用该包的列类型的修改形式。X
删除任务字母/数字组合之间的逗号。
加载
caption
包以便在表格标题和正文之间获得更多间距。
我相信你会喜欢最终的效果:
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
\usepackage{rotating,booktabs,tabularx,ragged2e,caption}
%% Create ragged-right versions of the "X" and "p" column types:
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\begin{document}
\begin{sidewaystable}[!ht]
\footnotesize
\caption{Schedule and Milestones} \label{Schedule}
\begin{tabularx}{\textwidth}{@{} P{0.35in} *{3}{YYYYYP{0.6in}}@{}}
\toprule
Phase~1 & \multicolumn{18}{c}{Month}\\
\cmidrule(l){2-19}
& 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 \\
\midrule
Milestones
& & & & & & Software Delivery to DARPA
& & & & & & Software Delivery to DARPA
& & & & & & Software Delivery to DARPA \\
\midrule
Tasks & U1 U2 E1 E2 & U1 U2 E1 E2 & U1 U2 E1 E2 & U1 U2 E1 E2 & U1 U2 E1 E2 E4 & U1 U2 E1 E2 E4 & U1 U2 E1 E2 & U1 U2 E1 E2 & U1 U2 E1 E2 & U1 U2 U3 E1 E2 E3 & U1 U2 E1 E2 E4 & U1 U2 E1 E2 E4 & U1 U2 E1 E2 & U1 U2 E1 E2 & U1 U2 E1 E2 & U1 U2 U3 E1 E2 E3 & U1 U2 E1 E2 E4 & U1 U2 E1 E2 E4 \\
\bottomrule
\end{tabularx}
\end{sidewaystable}
\end{document}