使用 evently 填写表格(宽度和高度)页面

使用 evently 填写表格(宽度和高度)页面

我正在尝试使用 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末尾的将避免由于带有降部的字符而产生的任何额外深度,因为底部没有文本,但有胶水)。

现在乐趣开始了。

  1. 我们\hbox to \hsize告诉 TeX 构建一个与页面一样宽的框。

  2. \cleaders<material>\hfill将用 的副本填充宽度<material>,将它们推近彼此并在两侧添加空间以完成填充。

  3. 我们的<material>宽度正好是 52 毫米,即四列,两边都有 1 毫米的空白(A4 纸宽为 210 毫米)。

  4. 现在我们指定<material>:它将\vbox to \vsize{...}填满整个页面高度。

  5. 为了填充它,我们做同样的事情:(\cleaders\copy\danbox\vfil我们必须使用\copy而不是\usebox启动水平模式)。A4 纸高 297 毫米,因此将容纳 11 行,两端留出 11 毫米。

就是这样。 :)

相关内容