是否可以设置表格或 \textwidth 固定宽度(以厘米为单位)?(LATEX)

是否可以设置表格或 \textwidth 固定宽度(以厘米为单位)?(LATEX)

我需要在宽度正好为 24 厘米的文档中创建一个表格。打印将为 A4 - 横向(如果重要的话,在欧盟)。有什么方法可以设置吗?

如果我设置:

\usepackage[a4paper,landscape,top=0cm, bottom=0cm, left=0cm, right=0cm]{geometry}

那么我的\textwidth是29.69577厘米。

编辑(我忘了):

当我设置:

\usepackage[a4paper,landscape,textwidth=24cm]{geometry}

那么我的\textwidth是23.99658厘米

我想稍后用到它:

\begin{tabular*}{\textwidth}

我做错什么了吗?

答案1

第一种情况:

\documentclass{article}
\usepackage[a4paper,landscape,top=0cm, bottom=0cm, left=0cm, right=0cm]{geometry}
\typeout{* paper width: \the\paperwidth}
\typeout{* text width: \the\textwidth}
\begin{document}
\end{document}

页边距为零,因此文本宽度等于纸张宽度:

* paper width: 845.04684pt
* text width: 845.04684pt

转换为厘米:

* 72.27 pt = 1 in
* 1 in = 2.54 cm

结果(gcalculator):29.6999996347 cm
结果(perl 1):29.6999996347032 cm

29.7 cm这与A4 纸长边的长度非常接近。

TeX 的精度受其最小单位限制:1 sp

  • 1 pt = 2 16 sp = 65536 sp ≈ 0.000000536285 厘米

指定 297 毫米而不是 29.7 厘米可以提高准确性:

\documentclass{article}
\usepackage[a4paper, paperheight=297mm, landscape, margin=0cm]{geometry}
\typeout{* paper width: \the\paperwidth}
\typeout{* text width: \the\textwidth}
\begin{document}
\end{document}

结果:

* paper width: 845.04684pt
* text width: 845.04684pt

转换为厘米(perl):29.6999996347032厘米

(通过添加 1 sp 可以使其变大并稍微接近 29.7 厘米。)

第二种情况:

\documentclass{article}
\usepackage[a4paper,landscape,textwidth=24cm]{geometry}

\typeout{* text width: \the\textwidth}

\begin{document}
\end{document}

结果:

* text width: 682.86613pt

转换为厘米(perl):23.9999995876574 cm

再次非常接近 24 厘米,TeX 中的最大值≤24 厘米。(通过添加 1 sp,可以使其更接近但大于 24 厘米。)

TeX 中的计算

e-TeX 命令中的缩放操作(乘法然后除法)\...expr提供了最佳精度,来自 e-TeX手动的

算术运算都是单独执行的,除了“缩放”运算(乘法后紧接着除法)之外,它作为一个组合运算执行,以 64 位乘积作为中间值。

此外,e-TeX 的\...expr命令会对结果进行四舍五入而不是截断以适合 TeX 内部 sp scala 中的结果。

以第二种情况为例:

\documentclass{article}
\usepackage[a4paper,landscape,textwidth=240mm]{geometry}

\makeatletter
\typeout{* text width: \strip@pt\dimexpr\textwidth*254/7227\relax cm}
\makeatother

\begin{document}
\end{document}

将实数 2.54 和 72.27 乘以 100 得到除数的整数。\strip@pt删除pt末尾的。结果:

* text width: 24cm

1 perl -e 'print 845.04684/72.27*2.54'

答案2

这是一个适合您的设置:

\documentclass{article}
\usepackage{geometry}
\geometry{%
  paper=a4paper, % A4 paper = 210mm x 297mm
  landscape, % 297mm x 210mm in landscape mode
  hmargin=28.5mm, % horizontal margin = 2 x 28.5mm = 57mm
                  %  > text width = 297mm - 57mm = 240mm = 24cm
  vmargin=10mm}   % vertical margin = 2 x 10mm = 20mm
                  %  > text height = 210mm - 20mm = 190mm = 19cm
\usepackage{printlen}
\uselengthunit{cm}
\begin{document}
\verb|\textwidth|:  \printlength\textwidth\par
\verb|\textheight|: \printlength\textheight
\end{document}

上述输出

\textwidth: 23.99658cm
\textheight: 18.9973cm

这与 24 厘米的文本宽度非常接近。差异(可忽略)是由于四舍五入造成的。

如果你对具有固定宽度的表格感兴趣,可以考虑使用tabularx具有灵活的X列。

相关内容