请考虑以下示例:
\documentclass[
a4paper,
12pt
]{article}
\usepackage[
hmargin = 2.4cm,
vmargin = 3cm
]{geometry}
\usepackage[
locale = DE,
detect-weight = true,
detect-inline-weight = math,
round-mode = places,
round-precision = 1
]{siunitx}
\def\mlrA{1ex}
\def\mlrB{\hspace{0.5em}}
\newcommand*\saenk[1]{\raisebox{-0.5ex}{#1}}
\ExplSyntaxOn
\cs_new_eq:NN \calc \fp_eval:n
\ExplSyntaxOff
\begin{document}
% constants
\def\masse{80}
\def\Jorden{9.8}
\def\Maanen{1.6}
\def\Juliper{26.5}
\def\Pluto{0.3}
\def\Mars{3.8}
\def\Venus{8.8}
\def\Merkur{5.4}
\def\Neptun{11.0}
\def\Uranus{10.4}
\def\Saturn{11.3}
\begin{center}
\large
\begin{tabular}{
|>{\raggedright\arraybackslash}m{2.4cm}
*{3}{|>{\centering\arraybackslash}m{4cm}}|
}
\hline
\multicolumn{1}{|c|}{\textbf{Planet}}
& \textbf{Tyngdekraften p{\aa} \SI{1}{\kg}}
& \textbf{Tyngdekraften p{\aa} personen}
& \vspace{0.5ex}\textbf{Svarer til Jordens tr{\ae}k i} \\[\mlrA]
\hline Jorden & \mlrB\SI{\Jorden}{\N} & & \\[\mlrA]
\hline Månen & \mlrB\SI{\Maanen}{\N} & & \\[\mlrA]
\hline Jupiter & \SI{\Juliper}{\N} & & \\[\mlrA]
\hline Pluto & \mlrB\SI{\Pluto}{\N} & & \\[\mlrA]
\hline Mars & \mlrB\SI{\Mars}{\N} & & \\[\mlrA]
\hline Venus & \mlrB\SI{\Venus}{\N} & & \\[\mlrA]
\hline Merkur & \mlrB\SI{\Merkur}{\N} & \SI{\calc{\masse*\Merkur}}{\N} & \saenk{\SI{\calc{\masse*\Merkur/\Jorden}}{\kg}} \\[\mlrA]
\hline Neptun & \SI{\Neptun}{\N} & & \\[\mlrA]
\hline Uranus & \SI{\Uranus}{\N} & & \\[\mlrA]
\hline Saturn & \SI{\Saturn}{\N} & & \\[\mlrA]
\hline
\end{tabular}
\end{center}
\end{document}
我如何自动地N
将表格第二列的单位()和对应的数字对齐?
我看过代码了siunitx
手册中的表 49但无法让它工作。因此,我S
再次删除了表格代码中的 -column,以使其看起来正确。
答案1
您可以使用table-space-text-pos
和<
列规范。
由于某种原因,最后一栏出现了问题S
,<
这似乎与ctable 和 siunitx:最后一列没有正确居中(可能不兼容?)我发现在末尾添加另一列会有所帮助,另请参阅彼得·格里尔的
评论。
如果你改为\mlrA
,.5ex
你可以用以下方式替换第一列
>{\raggedright\arraybackslash\rule{0pt}{\dimexpr1em+.5ex}}b{2.4cm}
你不需要像这样的宏\saenk
。
\mlrA
你甚至可以使用类似的东西来摆脱它
>{\raggedright\arraybackslash\rule[-1.5ex]{0pt}{\dimexpr1em+2ex}}b{2.4cm}
(这些测量值与产生垂直间距的测量值不同,但您可以明白我的意思。)
但是,对于实际的多行单元格(如标题中的单元格)而言,这无济于事,因为它们被 TeX 视为一行上的一个字符,并且它们比同一行的单行单元格增加了更多高度。您至少需要为最高的标题添加另一个特殊支柱。
结果如下面代码 B 所示。我还将所有多行列规范更改为b
垂直b
对齐。
代码
\documentclass[
a4paper,
12pt
]{article}
\usepackage[
hmargin = 2.4cm,
vmargin = 3cm
]{geometry}
\usepackage[
locale = DE,
detect-weight = true,
detect-inline-weight = math,
round-mode = places,
round-precision = 1
]{siunitx}
\usepackage{xfp}
\def\mlrA{1ex}
\ExplSyntaxOn
\newcommand*\siunitxNumberUnitProduct{\l__siunitx_number_unit_product_tl}
\ExplSyntaxOff
\begin{document}
\def\masse{80}
\def\Jorden{9.8}
\def\Maanen{1.6}
\def\Juliper{26.5}
\def\Pluto{0.3}
\def\Mars{3.8}
\def\Venus{8.8}
\def\Merkur{5.4}
\def\Neptun{11.0}
\def\Uranus{10.4}
\def\Saturn{11.3}
\begin{center}
\large
\begin{tabular}{
|>{\raggedright\arraybackslash}m{2.4cm}
|S[table-format = 2.1,
table-space-text-post = \siunitxNumberUnitProduct\si{\N}]<{\siunitxNumberUnitProduct\si{\N}}
|S[table-format = 3.0,
table-space-text-post = \siunitxNumberUnitProduct\si{\N}]<{\siunitxNumberUnitProduct\si{\N}}
|S[table-format = 3.1,
table-space-text-post = \siunitxNumberUnitProduct\si{\kg}]<{\siunitxNumberUnitProduct\si{\kg}}
|@{}c@{} % something's fishy with S in the last column
}
\hline\multicolumn{1}{|c|}{\textbf{Planet}}
& \multicolumn{1}{>{\centering}m{4cm}|}{\textbf{Tyngdekraften p{\aa} \SI{1}{\kg}}}
& \multicolumn{1}{>{\centering}m{4cm}|}{\textbf{Tyngdekraften p{\aa} personen}}
& \multicolumn{1}{>{\centering}m{4cm}|}{\textbf{Svarer til Jordens tr{\ae}ki}} \\[\mlrA]
\hline Jorden & \Jorden & \fpeval{\masse*\Jorden} & \fpeval{\masse*\Jorden/\Jorden} & \\[\mlrA]
\hline Månen & \Maanen & \fpeval{\masse*\Maanen} & \fpeval{\masse*\Maanen/\Jorden} & \\[\mlrA]
\hline Jupiter & \Juliper & \fpeval{\masse*\Juliper}& \fpeval{\masse*\Juliper/\Jorden}& \\[\mlrA]
\hline Pluto & \Pluto & \fpeval{\masse*\Pluto} & \fpeval{\masse*\Pluto/\Jorden} & \\[\mlrA]
\hline Mars & \Mars & \fpeval{\masse*\Mars} & \fpeval{\masse*\Mars/\Jorden} & \\[\mlrA]
\hline Venus & \Venus & \fpeval{\masse*\Venus} & \fpeval{\masse*\Venus/\Jorden} & \\[\mlrA]
\hline Merkur & \Merkur & \fpeval{\masse*\Merkur} & \fpeval{\masse*\Merkur/\Jorden} & \\[\mlrA]
\hline Neptun & \Neptun & \fpeval{\masse*\Neptun} & \fpeval{\masse*\Neptun/\Jorden} & \\[\mlrA]
\hline Uranus & \Uranus & \fpeval{\masse*\Uranus} & \fpeval{\masse*\Uranus/\Jorden} & \\[\mlrA]
\hline Saturn & \Saturn & \fpeval{\masse*\Saturn} & \fpeval{\masse*\Saturn/\Jorden} & \\[\mlrA]
\hline
\end{tabular}
\end{center}
\end{document}
代码 B
\documentclass[
a4paper,
12pt
]{article}
\usepackage[
hmargin = 2.4cm,
vmargin = 3cm
]{geometry}
\usepackage[
locale = DE,
detect-weight = true,
detect-inline-weight = math,
round-mode = places,
round-precision = 1
]{siunitx}
\ExplSyntaxOn
\newcommand*\siunitxNumberUnitProduct{\l__siunitx_number_unit_product_tl}
\ExplSyntaxOff
\begin{document}
\def\masse{80}
\def\Jorden{9.8}
\def\Maanen{1.6}
\def\Juliper{26.5}
\def\Pluto{0.3}
\def\Mars{3.8}
\def\Venus{8.8}
\def\Merkur{5.4}
\def\Neptun{11.0}
\def\Uranus{10.4}
\def\Saturn{11.3}
\newcommand*\myStrut{\rule[-1.5ex]{0pt}{\dimexpr1em+2ex}}
\newcommand*\myStrutH{\rule{0pt}{\dimexpr1em+.5ex}}
\begin{center}
\large
\begin{tabular}{
|>{\raggedright\arraybackslash\myStrut}b{2.4cm}
|S[table-format = 2.1,
table-space-text-post = \siunitxNumberUnitProduct\si{\N}]<{\siunitxNumberUnitProduct\si{\N}}
|S[table-format = 3.0,
table-space-text-post=\siunitxNumberUnitProduct\si{\N}]<{\siunitxNumberUnitProduct\si{\N}}
|S[table-format = 3.1,
table-space-text-post=\siunitxNumberUnitProduct\si{\kg}]<{\siunitxNumberUnitProduct\si{\kg}}
|@{}c@{} % something's fishy with S in the last column
}
\hline\multicolumn{1}{|>\myStrut c|}{\textbf{Planet}}
& \multicolumn{1}{>{\centering\myStrutH}b{4cm}|}{\textbf{Tyngdekraften p{\aa} \SI{1}{\kg}}}
& \multicolumn{1}{>{\centering}b{4cm}|}{\textbf{Tyngdekraften p{\aa} personen}}
& \multicolumn{1}{>{\centering}b{4cm}|}{\textbf{Svarer til Jordens tr{\ae}ki}} \\
\hline Jorden & \Jorden & \calc{\masse*\Jorden} & \calc{\masse*\Jorden/\Jorden} & \\
\hline Månen & \Maanen & \calc{\masse*\Maanen} & \calc{\masse*\Maanen/\Jorden} & \\
\hline Jupiter & \Juliper & \calc{\masse*\Juliper}& \calc{\masse*\Juliper/\Jorden}& \\
\hline Pluto & \Pluto & \calc{\masse*\Pluto} & \calc{\masse*\Pluto/\Jorden} & \\
\hline Mars & \Mars & \calc{\masse*\Mars} & \calc{\masse*\Mars/\Jorden} & \\
\hline Venus & \Venus & \calc{\masse*\Venus} & \calc{\masse*\Venus/\Jorden} & \\
\hline Merkur & \Merkur & \calc{\masse*\Merkur} & \calc{\masse*\Merkur/\Jorden} & \\
\hline Neptun & \Neptun & \calc{\masse*\Neptun} & \calc{\masse*\Neptun/\Jorden} & \\
\hline Uranus & \Uranus & \calc{\masse*\Uranus} & \calc{\masse*\Uranus/\Jorden} & \\
\hline Saturn & \Saturn & \calc{\masse*\Saturn} & \calc{\masse*\Saturn/\Jorden} & \\
\hline
\end{tabular}
\end{center}
\end{document}