使用framed和columns

使用framed和columns

我想在标签纸上打印一些标签,因此必须将文本对齐到页面上非常精确的位置。我必须再次测量实际数字,但它大约有 27 行和 9 列标签,每个标签宽 2 厘米,高 1 厘米,列间距约为 2 毫米,行间距为零(0 毫米)。

现在我的问题是:如何在 ConTeXt 中最好地做到这一点?我的第一个想法是使用表格机制,但理想情况下,我希望远离它,而是使用一种可以只输入单个标签内容的方法,而不必担心某一列已满而我必须转到下一列。

framed我希望通过s 和的组合来实现这一点,startcolumns但我无法让框架到达我想要的位置:

\setupframed[width=2cm, height=1cm,after=]
\setupcolumns[distance=1.75mm]
\setuplayout[backspace=8mm,width=194mm,topspace=12mm,height=273mm]


\starttext
\startcolumns[n=9]
\dorecurse{50}{\framed{Label \recurselevel}}
\stopcolumns
\stoptext

我遇到的三个问题是:

  1. 它似乎忽略了我的顶部空间,它仍然起步太低
  2. 框架之间有垂直空间,我不知道如何消除它
  3. 它似乎不是先完全填满第一列再填满第二列,而是尝试在所有列中保持平衡。我宁愿用不同的方式来实现这一点。

有人能指点我如何修复这些问题吗?或者是否有其他专门针对我忽略的此类问题的机制?

答案1

使用framedcolumns

为了在框架之间没有额外空间或每列顶部没有额外空间的环境frames中堆叠,您必须进行以下更改。columns

  1. 禁用grid列以避免每列开头有多余的空间。

  2. 禁用lineskip当单独行之间的内容接触时插入的值。

  3. 禁用列平衡以确保每列都填满至底部,直到开始新的列。


\defineframed
  [Label]
  [ width=2.5cm,
   height=1cm]

\setuplayout
  [page]
  [backspace=8mm,
    topspace=13mm]

\setuplayout [page]

\setupinterlinespace [off]

\setupcolumns
  [       n=7,
   distance=2.5mm,
       grid=no,
    balance=no]

\starttext

\startcolumns
\dorecurse{200}{\Label{Label \recurselevel}}
\stopcolumns

\stoptext

带有 columns 环境的标签

使用imposition机制

columns您可以使用拼版机制将多个较小的页面放在一张大纸上,而不是滥用环境。

使用nxny键,\setuppaper您可以设置标签的行数和列数。


\definepapersize
  [label]
  [width=2.5cm,
   height=1cm]

\setuppapersize [label] [A4]

\setuppaper
  [nx=7,
   ny=27,
   dx=2.5mm,
   dy=1sp]

\setuplayout
  [page]
  [backspace=0.25ex,
    topspace=0.25ex]

\setuplayout [page]

\setuppaper
  [backspace=8mm,
    topspace=13mm]

\setuparranging [XY]

\setuplayout
  [location=middle]

\showframe [paper]

\starttext
\dorecurse{200}{Label \recurselevel\page}
\stoptext

带拼版机制的标签

答案2

使用 Wolfgang Schuster 评论的修改(并再次测量纸张后),生成了我想要的 PDF:

\setupframed[width=2.5cm, height=1cm,after=]
\setupcolumns[distance=2.5mm]
\setuplayout[backspace=8mm,width=194mm,header=0mm,topspace=13mm,height=272mm,footer=0mm]
\setupinterlinespace[off]


\starttext
\startcolumns[n=7,grid=no,balance=no]
\dorecurse{200}{\framed{Label \recurselevel}}
\stopcolumns
\stoptext

相关内容