答案1
一般来说,我们不是文档创建服务。为了获得最佳解决方案,您最好向我们展示您能做什么。此外,通常不是仅需一种方式即可创建特定外观:即使是一张桌子也可以通过多种方式创建。
不管怎样,也许您甚至不知道如何开始。所以,我将在这里为您提供一些基本工具来帮助您前进。但是,这不是一个“解决方案”,而是一个起点。使用我在此处提供的详细信息,您将拥有创建所需表格所需的工具。
使用环境创建表tabular
。
环境tabular
是开始创建表(如您与我们分享的表)的好地方。基本语法如下:
\begin{tabular}{<column_configuration_identifiers>}
.... column content where individual columns are
separated by `&` and each row ends with `\\`
\end{tabular}
以下示例说明了其中一些细节
它是用以下代码创建的:
\documentclass{article}
\usepackage[margin=1in]{geometry}
\begin{document}
\begin{tabular}{|l|c|r|}\hline
Header 1 & Header 2 & Header 3 \\\hline
\parbox[t]{2in}{%%
ARMA virumque cano, Troiae qui primus ab oris
Italiam, fato profugus, Laviniaque venit
litora, multum ille et terris iactatus et alto
vi superum saevae memorem Iunonis ob iram;
multa quoque et bello passus, dum conderet urbem,
inferretque deos Latio, genus unde Latinum,
Albanique patres, atque altae moenia Romae.}
&
\parbox[t]{2in}{%%
Musa, mihi causas memora, quo numine laeso,
quidve dolens, regina deum tot volvere casus
insignem pietate virum, tot adire labores
impulerit. Tantaene animis caelestibus irae?}
&
\parbox[t]{2in}{\centering
Urbs antiqua fuit, Tyrii tenuere coloni,
Karthago, Italiam contra Tiberinaque longe
ostia, dives opum studiisque asperrima belli;
quam Iuno fertur terris magis omnibus unam
posthabita coluisse Samo; hic illius arma,
hic currus fuit; hoc regnum dea gentibus esse,
si qua fata sinant, iam tum tenditque fovetque.
}
\\\hline
\end{tabular}
\end{document}
当然,它并不完全是您想要的外观,但它确实向您展示了您可以做什么。
有关此示例的详细信息
有多种列样式标识符:
l
将给定列中每个单元格的内容左对齐。c
将列中的所有条目居中r
将列中每个单元格的内容右对齐。|
表示应在列之间画一条垂直线
还有一些其他的风格,但我将在下面暂时不提。
您的表格内容似乎在每一列中都有“段落”信息。处理此问题的一种方法是使用\parbox
。它的基本语法是
\parbox[<optional_alignment_identifier>]{<width>}{<content>}
在标题\parbox
指定的对齐方式中tabular
被忽略。
有一个列标识符p
,指示列中的每个单元格将被格式化为段落。语法是
p{<width>}
可以使用以下代码创建上述表格:
\begin{tabular}{|p{2in}|p{2in}|p{2in}|}\hline
Header 1 & \hspace{\fill} Header 2 \hspace{\fill} & \hspace{\fill} Header 3 \\\hline
ARMA virumque cano, Troiae qui primus ab oris
Italiam, fato profugus, Laviniaque venit
litora, multum ille et terris iactatus et alto
vi superum saevae memorem Iunonis ob iram;
multa quoque et bello passus, dum conderet urbem,
inferretque deos Latio, genus unde Latinum,
Albanique patres, atque altae moenia Romae.
&
Musa, mihi causas memora, quo numine laeso,
quidve dolens, regina deum tot volvere casus
insignem pietate virum, tot adire labores
impulerit. Tantaene animis caelestibus irae?
&
Urbs antiqua fuit, Tyrii tenuere coloni,
Karthago, Italiam contra Tiberinaque longe
ostia, dives opum studiisque asperrima belli;
quam Iuno fertur terris magis omnibus unam
posthabita coluisse Samo; hic illius arma,
hic currus fuit; hoc regnum dea gentibus esse,
si qua fata sinant, iam tum tenditque fovetque.
\\\hline
\end{tabular}
创建列表
阅读列表环境非常值得。我会举例说明enumitem
。
在序言中,你可以调用该包
\usepackage{enumitem}
然后您可以创建一个新的列表,如下所示:
\newlist{mylist}{itemize}{4}
\setlist[mylist]{%%
label=$\diamond$,
topsep=0pt,
itemsep=0pt,
parsep=0pt,
labelwidth=*,
leftmargin=8pt,
labelindent=6pt,
}
使用这个我可以创建如下列表:
hic currus fuit; hoc regnum dea gentibus esse,
si qua fata sinant, iam tum tenditque fovetque.
\begin{mylist}
\item Hello
\begin{mylist}
\item apple
\item banana
\item carp
\end{mylist}
\item world
\end{mylist}
这将创建:
怎么办?
现在,您已拥有创建所需表格所需的所有工具。看看您能将哪些东西组合在一起。
如果仍然陷入困境该怎么办
发布新问题并向我们展示您能解决的问题。我们很乐意为您提供帮助。
答案2
在这样的表格中输入内容可能会很无聊,因此定义一个方便的语法会更有趣。
标题作为 的参数给出\begin{columntabular}
。接下来输入每一列,每一项都以 为前缀,\lv[<number>]
表示缩进级别。
在列的末尾\nextcolumn
应该插入命令。
\documentclass{article}
\usepackage{xparse,environ}
\ExplSyntaxOn
\NewEnviron{columntabular}[1]
{% #1 is the list of headers
\egreg_coltab:nV { #1 } \BODY
}
\NewDocumentCommand{\lv}{O{0}}
{
\bool_if:NTF \l_egreg_coltab_start_bool
{ \bool_set_false:N \l_egreg_coltab_start_bool }
{ \\ \hspace*{#1em} }
\ignorespaces
}
\bool_new:N \l_egreg_coltab_start_bool
\seq_new:N \l_egreg_coltab_header_seq
\seq_new:N \l_egreg_coltab_columns_seq
\seq_new:N \l_egreg_coltab_body_seq
\cs_new_protected:Nn \egreg_coltab:nn
{
\cs_set_eq:NN \par \scan_stop:
% gather the header
\seq_set_split:Nnn \l_egreg_coltab_header_seq { & } { #1 }
% gather the body
\seq_set_split:Nnn \l_egreg_coltab_columns_seq { \nextcolumn } { #2 }
% massage the body
\seq_clear:N \l_egreg_coltab_body_seq
\seq_map_inline:Nn \l_egreg_coltab_columns_seq
{
\seq_put_right:Nn \l_egreg_coltab_body_seq
{
\begin{tabular}[t]{@{}l@{}}
\bool_set_true:N \l_egreg_coltab_start_bool
##1
\end{tabular}
}
}
% produce the table
\begin{tabular}{| *{\seq_count:N \l_egreg_coltab_header_seq}{l|}}
\hline
\seq_use:Nn \l_egreg_coltab_header_seq { & } \\
\hline
\seq_use:Nn \l_egreg_coltab_body_seq { & } \\
\hline
\end{tabular}
}
\cs_generate_variant:Nn \egreg_coltab:nn { nV }
\ExplSyntaxOff
\begin{document}
\begin{columntabular}{Representation & Evaluation & Optimization}
\lv[0] Instances
\lv[1] $K$-nearest neighbor
\lv[1] Support vector machines
\lv[0] Hyperplanes
\lv[1] Naive Bayes
\lv[1] Logistic regression
\nextcolumn
\lv[0] Accuracy/Error rate
\lv[0] Precision and recall
\lv[0] Squared error
\nextcolumn
\lv[0] Continuous optimization
\lv[1] Unconstrained
\lv[2] Gradient descent
\lv[2] Conjugate gradient
\lv[1] Constrained
\lv[2] Linear programming
\end{columntabular}
\end{document}