![是否可以设置表格或 \textwidth 固定宽度(以厘米为单位)?(LATEX)](https://linux22.com/image/311155/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%BE%E7%BD%AE%E8%A1%A8%E6%A0%BC%E6%88%96%20%5Ctextwidth%20%E5%9B%BA%E5%AE%9A%E5%AE%BD%E5%BA%A6%EF%BC%88%E4%BB%A5%E5%8E%98%E7%B1%B3%E4%B8%BA%E5%8D%95%E4%BD%8D%EF%BC%89%EF%BC%9F%EF%BC%88LATEX%EF%BC%89.png)
我需要在宽度正好为 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
列。