这是我的表的支架,它已经减少了所有依赖性。
\documentclass{scrbook}
\usepackage{enumitem,longtable}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{P}[1]{>{\arraybackslash}m{#1}}
\makeindex
\begin{document}
\begin{longtable}{@{}P{4.3cm}@{}P{1cm}@{\hspace{3mm}}P{4.3cm}@{}P{1cm}@{}}
\multicolumn{4}{@{}p{10.8cm}@{}}{\textbf{heading}}
\\[2mm]
\multicolumn{2}{@{}p{5.3cm}@{}}{{texts}}
&
\multicolumn{2}{@{}m{5.3cm}@{}}{{text2a}
\newline
{text2b}}
\\
text3 & RL=*
&
text4a oder
\newline
text4b & RL=*/*
\\
\multicolumn{2}{@{}p{5.3cm}@{}}{text5}
&
\multicolumn{2}{@{}p{5.3cm}@{}}{
\begin{scriptsize}
\textbf{A: }{Text6}
\newline
\textbf{B: }Text7
\end{scriptsize}
}
\\
\hline
\end{longtable}
\end{document}
我无法同时完成两件事:让第一列和第三列垂直对齐,并让单行和多行水平居中对齐。我还错过了什么?
答案1
我将给出一个符合我理解的您的要求的答案:对齐列和居中行。但重要的是我如何在很短的时间内和很少的击键次数内得到答案。
1 我开始在 excel 中创建表格,包括粗体和脚本大小所需的 TeX 命令。“heading”一词不需要这些命令。
2使用 Excel2Latex 插件,我“复制并粘贴”了代码,位于您的代码下方。参见图。查看我选择的选项。
https://ctan.org/tex-archive/support/excel2latex?lang=en
我还将需要运行的软件包multirow
和添加到了序言中。bigstut
3\begin{tabular}
然后,我将和获得的 代码“移植”\end{tabular}
到您的 longtable 环境中,并将 P 列更改为类型 C。为了清楚起见,还添加了标题。
(我忘了在最后一栏中替换{RL=*\*}
为 。){RL=*\textbackslash{}*}
\documentclass{scrbook}
\usepackage{enumitem,longtable}
\usepackage{array}
\usepackage{bigstrut} % added
\usepackage{multirow} % added
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{P}[1]{>{\arraybackslash}m{#1}}
\makeindex
\begin{document}
\begin{longtable}{@{}P{4.3cm}@{}P{1cm}@{\hspace{3mm}}P{4.3cm}@{}P{1cm}@{}}
\multicolumn{4}{@{}p{10.8cm}@{}}{\textbf{heading}}
\\[2mm]
\multicolumn{2}{@{}p{5.3cm}@{}}{{texts}}
&
\multicolumn{2}{@{}m{5.3cm}@{}}{{text2a}
\newline
{text2b}}
\\
text3 & RL=*
&
text4a oder
\newline
text4b & RL=*/*
\\
\multicolumn{2}{@{}p{5.3cm}@{}}{text5}
&
\multicolumn{2}{@{}p{5.3cm}@{}}{
\begin{scriptsize}
\textbf{A: }{Text6}
\newline
\textbf{B: }Text7
\end{scriptsize}
}
\\
\hline
\end{longtable}
% Table generated by Excel2LaTeX from sheet 'Sheet1'
\begin{table}[htbp]
\centering
\caption{ Table generated by Excel2LaTeX}
\begin{tabular}{cccc}
\multicolumn{4}{l}{\textbf{headings}} \bigstrut[b]\\
\hline
\multirow{2}[1]{*}{texts} & & text2a & \bigstrut[t]\\
& & text2b & \\
\multirow{2}[0]{*}{text3} & \multirow{2}[0]{*}{RL=*} & text4a oder & \multirow{2}[0]{*}{RL=*\*} \\
& & text4b & \\
\multirow{2}[1]{*}{text5} & & {\scriptsize \textbf{A}:Text6} & \\
& & {\scriptsize \textbf{B}:Text7} & \bigstrut[b]\\
\hline
\end{tabular}%
\label{tab:addlabel}%
\end{table}%
\begin{longtable}{@{}C{4.3cm}@{}C{1cm}@{\hspace{3mm}}C{4.3cm}@{}C{1cm}@{}} %changed P to C type
\caption{Transplanted to longtable plus C columns}\\ % added
\multicolumn{4}{l}{\textbf{headings}} \bigstrut[b]\\
\hline
\multirow{2}[1]{*}{texts} & & text2a & \bigstrut[t]\\
& & text2b & \\
\multirow{2}[0]{*}{text3} & \multirow{2}[0]{*}{RL=*} & text4a oder & \multirow{2}[0]{*}{RL=*\*} \\
& & text4b & \\
\multirow{2}[1]{*}{text5} & & {\scriptsize \textbf{A}:Text6} & \\
& & {\scriptsize \textbf{B}:Text7} & \bigstrut[b]\\
\hline
\end{longtable}
\end{document}
我之所以解释这一切,是因为我处理过很多复杂的表格、文本、一些方程式,而且大部分都是数字。有些列是从其他列计算出来的,或者链接到数据库的。所以这项工作是使用 LaTeX 以外的其他工具在很长时间内完成的。一旦表格成熟、得到同行的认可并准备好发布,LaTeX 就会作为最后一步进入现场。(唯一的例外是包含许多方程式的表格。没有什么能胜过 LaTeX)。
可重现结果的规则是“原始数据只有一个入口点”。对我来说,手动将所有内容重写为 LaTeX 代码没有任何意义,这是一项耗时且容易出错的任务。(特别是如果审阅者后来建议更改列的顺序或排序顺序!)
当我使用 Excel 作为主要工具开发工作时,我使用插件转到 LaTeX。其他统计软件包(如“R”)支持其他导出工具将数据转换为 LaTeX 代码。当然,可能需要进行一些调整以适应页面、方向等,但数据已经存在,大多数(绝非全部)格式也存在。
最后但并非最不重要的一点是,我发现该插件是一个很好的教学工具,尤其是对于复杂的格式,当我不想通过许多专用于表格的包来寻找解决方案时(或者懒得阅读手册)。尝试使用注释中提到的“umbrochen”行自己做练习。
您可以在 Excel 中设计表格:行、多列、多行、对齐、颜色等,然后将插件生成的代码粘贴到一个简单的 LateX 文档中,只需运行代码所需的几个包,如果可能的话,还有它的最终几何形状。响应很快,几乎就像 GUI,特别是如果您有两个屏幕。请注意,您可以使用实际数据,使用电子表格设置小数位数、字体、突出显示异常值等。
有时候,您必须进行工具无法捕捉的手动调整,例如列的绝对宽度。只有这样,您才能将结果放入实际的 LaTeX 文档中,以查看是否与其他包或宏没有冲突。
由于您将保留电子表格作为 LaTeX 代码的来源,因此任何更改(小数位数、隐藏列、重新排序和从数据库更新)都非常简单。使用文本编辑器或 LaTeX,任何这些常见任务对于数十或数百行和数据(一些是计算出来的,其他链接到其他来源)来说都是几乎不可能完成的工作。
获得回答问题结果的时间:15 分钟。撰写此答案的时间:2 小时以上。
答案2
凭借出色的nicematrix
包装
\documentclass{article}
\usepackage{nicematrix}
\usepackage{calc}
\usepackage{booktabs}
\usepackage{xcolor}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1\textwidth-2\tabcolsep-1.5\arrayrulewidth}}
\newcolumntype{Y}[1]{>{\centering\arraybackslash}p{#1\textwidth-2\tabcolsep-1.5\arrayrulewidth}}
\begin{document}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}m{#1\textwidth-2\tabcolsep-1.5\arrayrulewidth}}
\begin{NiceTabular}{P{0.2}P{0.2}@{\hspace{-1cm}}P{0.2}P{0.2}}[code-before = \rowcolor{red!30}{3}\cellcolor{blue!30}{1-1}]
\textbf{heading}&&&\\
\toprule[2pt]
text1&&texta\newline textb&\\
text2&RL=*&texta\newline textb&RL=*/*\\
text3&&\scriptsize{\textbf{A:}{Text}\newline \textbf{B:}{Text}}&\\
\bottomrule[2pt]
\end{NiceTabular}
\end{document}