![使用 evently 填写表格(宽度和高度)页面](https://linux22.com/image/255962/%E4%BD%BF%E7%94%A8%20evently%20%E5%A1%AB%E5%86%99%E8%A1%A8%E6%A0%BC%EF%BC%88%E5%AE%BD%E5%BA%A6%E5%92%8C%E9%AB%98%E5%BA%A6%EF%BC%89%E9%A1%B5%E9%9D%A2.png)
我正在尝试使用 LaTeX 制作粘性标签。我以为这会很简单,因为 LaTeX 对绝对单位的支持很好,但结果却相当困难。这是标签纸的规格:
- 左右边距:0mm
- 上下边距:8mm
- 标签高度:25mm
- 标签宽度:52mm
- 内标签边距:2mm
这是 11 行 4 列的标签。标签将只包含文本。以下是我目前得到的结果:
\documentclass[portrait,a4paper,danish,oneside,final,10pt]{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{geometry}
\usepackage{palatino}
\usepackage{tabularx}
\geometry{hoffset=0mm,
hmargin=0mm,
vmargin=8mm,
footskip=0mm,
papersize={210mm,297mm},
total={210mm,297mm}}
\pagestyle{empty}
\aliaspagestyle{chapter}{empty}
\aliaspagestyle{part}{empty}
\setlength{\tabcolsep}{2mm}
\newcommand{\labeltext}{\textbf{M\&M} er en sød vin lavet på hyben plukket ved Vemmingbund Strand i Sønderjylland. Vinen produceres.}
\begin{document}\noindent
\begin{tabularx}{\textwidth}{X|X|X|X}\hline
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\labeltext & \labeltext & \labeltext & \labeltext \vfill \\%[\mylabelheight]
\hline
\end{tabularx}%
\end{document}
这几乎是正确的。但是,表格单元格的高度不会扩展以适合纸张(即底行应该触及底边距)。
另外,我不知道如何让每个单元格的上下边距均为 2 毫米。我尝试使用\vspace{2mm}
,但产生的空间比要求的要大得多。
我尝试发布结果的图片,但目前还不允许。抱歉。
提前致谢!
答案1
别太当真。不过,嘿,它确实有效!
想法借用(或窃取?)自 TeXbook,练习 21.8。
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[danish]{babel}
\usepackage{geometry}
\usepackage{palatino,microtype}
\geometry{margin=0mm}
\pagestyle{empty}
\newcommand{\labeltext}{%
\textbf{M\&M} er en sød vin lavet på hyben plukket ved Vemmingbund
Strand i Sønderjylland. Vinen produceres.}
\fboxrule=0.2pt
\fboxsep=-\fboxrule
\parindent=0pt
\newsavebox{\danbox}
\begin{document}
\sbox\danbox{%
\fbox{%
\vbox to 25mm{
\hsize=52mm \leftskip=2mm \rightskip=2mm
\vfill\labeltext\vfill
}%
}%
}
\hbox to\hsize{\cleaders\vbox to \vsize{\cleaders\copy\danbox\vfil}\hfil}
\end{document}
这个想法是根据需要重复一个框。首先,我们构建它(使用低级命令,以便获得最大控制权)并将其存储在保存箱中;通过设置\fboxsep
为,-\fboxrule
我们确保框架不会增加框的高度和宽度。框本身的宽度为 52 毫米,高度为 25 毫米(\vfill
末尾的将避免由于带有降部的字符而产生的任何额外深度,因为底部没有文本,但有胶水)。
现在乐趣开始了。
我们
\hbox to \hsize
告诉 TeX 构建一个与页面一样宽的框。\cleaders<material>\hfill
将用 的副本填充宽度<material>
,将它们推近彼此并在两侧添加空间以完成填充。我们的
<material>
宽度正好是 52 毫米,即四列,两边都有 1 毫米的空白(A4 纸宽为 210 毫米)。现在我们指定
<material>
:它将\vbox to \vsize{...}
填满整个页面高度。为了填充它,我们做同样的事情:(
\cleaders\copy\danbox\vfil
我们必须使用\copy
而不是\usebox
启动水平模式)。A4 纸高 297 毫米,因此将容纳 11 行,两端留出 11 毫米。
就是这样。 :)