我有一张表,其中有一列,我需要在表的中间更改其类型。
例如,我有一部分表格,其中的列将保存带有小数点和一定对齐方式的排版数字。经过几行之后,我需要同一列为简单数字(无小数对齐)并具有不同的对齐方式。
例如
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{lS[table-format=3.2]}
\multicolumn{2}{l}{\textbf{Part 1}} \\
Number & 100 \\
Number & 2.00 \\
% Somehow change the row format
\newrowformat{rS[table-format=1]}
\multicolumn{2}{l}{\textbf{Part 2}} \\
Right & 1 \\
Rigth &10 \\
\end{tabular}
\end{document}
我知道我可以使用\multicolumn
1 列跨度 hack 来更改每个单元格的类型,但我想要一个更灵活的解决方案,允许我从那时开始更改类型。
我怎样才能实现这个目标?
答案1
我建议您简单地设置两个单独的tabular
环境,每个环境的一行tabular
(可能是标题行)包含有关每列(事前固定)宽度的信息。
在下面的例子中,每个例子中都使用垂直线tabular
纯粹是为了证明它们在两个环境中对齐。
\documentclass{article}
\usepackage{siunitx}
\newlength{\mylen}
\setlength{\mylen}{1in} % desired width of first column
\newcommand\slug{\hphantom{123456}} % set desired width of "slug" used in column 2
\begin{document}
\begin{center}
\begin{tabular}{|l|S[table-format=3.2]|}
\multicolumn{1}{|p{\mylen}|}{\textbf{Part 1}} & {\slug} \\
Number & 100 \\
Number & 2.00 \\
\end{tabular}\\[-0.25ex] % snug up the two tabulars
\begin{tabular}{|r|S[table-format=1]|}
\multicolumn{1}{|p{\mylen}|}{\textbf{Part 2}} & {\slug} \\
Right & 1 \\
Right & 10 \\
\end{tabular}
\end{center}
\end{document}
答案2
使用嵌套表。请注意,两个表中相应的列宽必须相同:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{center}
\begin{tabular}{| >{\raggedright}p{1in} | S[table-format=3.2] |}
\textbf{Part 1} & \multicolumn{1}{p{0.5in}|}{} \\
Number & 100 \\
Number & 2.00 \\
\multicolumn{2}{@{}c@{}}{
\begin{tabular}{|>{\raggedleft}p{1in}|S[table-format=1]|}
\multicolumn{1}{|l|}{\textbf{Part 2}}
& \multicolumn{1}{p{0.5in}|}{} \\
Right & 1 \\
Right & 10 \\
\end{tabular}}
\end{tabular}
\end{center}
\end{document}