从外部文件创建 LCC 标签

从外部文件创建 LCC 标签

我正在制作一页包含国会图书馆分类号 (LCC) 的粘性标签。它们位于labels包裹调用“纯格式”。

\begin{filecontents*}{\jobname.dat}
PR
6051
.D3352
M68

Z
253.4
.T47
K58

QA
76.6
.K644

Z
250.8
.M46
E578

PR
5815

PR
6039
.O32
T65
\end{filecontents*}
\documentclass[letterpaper,10pt]{article}

\usepackage[newdimens]{labels}
\LabelCols=3
\LabelRows=10
\LeftPageMargin=4mm
\RightPageMargin=4mm
\TopPageMargin=12.5mm
\BottomPageMargin=13mm
\InterLabelColumn=4mm
\InterLabelRow=0mm
\LeftLabelBorder=0.2mm
\RightLabelBorder=0.2mm
\TopLabelBorder=0.2mm
\BottomLabelBorder=0mm

\LabelGridtrue % show grid for labels
\LabelInfotrue % show info for labels

\begin{document}
\labelfile{\jobname.dat}
\end{document}

它看起来像这样:

简单标签,左侧齐平

但是,我实际上想调整标签的格式,使它们向右移动,同时仍然保持左对齐。我这样做了:

\begin{center}%
\parbox{20mm}{%
PR
6051
.D3352
M68}\end{center}

全文在此:

\documentclass[letterpaper,10pt]{article}

\usepackage[newdimens]{labels}
\LabelCols=3
\LabelRows=10
\LeftPageMargin=4mm
\RightPageMargin=4mm
\TopPageMargin=12.5mm
\BottomPageMargin=13mm
\InterLabelColumn=4mm
\InterLabelRow=0mm
\LeftLabelBorder=0.2mm
\RightLabelBorder=0.2mm
\TopLabelBorder=0.2mm
\BottomLabelBorder=0mm

\LabelGridtrue % show grid for labels
\LabelInfotrue % show info for labels

\begin{document}
\begin{labels}%
\begin{center}%
\parbox{20mm}{%
PR
6051
.D3352
M68}\end{center}

\begin{center}%
\parbox{20mm}{%
Z
253.4
.T47
K58}\end{center}

\begin{center}%
\parbox{20mm}{%
QA
76.6
.K644}\end{center}

\begin{center}%
\parbox{20mm}{%
Z
250.8
.M46
E578}\end{center}

\begin{center}%
\parbox{20mm}{%
PR
5815}\end{center}

\begin{center}%
\parbox{20mm}{%
PR
6039
.O32
T65}\end{center}

\end{labels}

\end{document}

它看起来像这样:

格式更好的标签

当然,我还需要从外部文件读取。我想也许我可以修改宏\labelfile来实现这一点。然而,当我查看时labels.sty,我发现它只是 的一个包装器\input

\def\labelfile#1{\begin{labels}\input#1\end{labels}}

所以接下来我尝试textmerg

\begin{filecontents*}{\jobname.dat}
PR
6051
.D3352
M68

Z
253.4
.T47
K58

QA
76.6
.K644

Z
250.8
.M46
E578

PR
5815

PR
6039
.O32
T65
\end{filecontents*}
\documentclass[letterpaper,10pt]{article}

\usepackage{textmerg}

\usepackage[newdimens]{labels}
\LabelCols=3
\LabelRows=10
\LeftPageMargin=4mm
\RightPageMargin=4mm
\TopPageMargin=12.5mm
\BottomPageMargin=13mm
\InterLabelColumn=4mm
\InterLabelRow=0mm
\LeftLabelBorder=0.2mm
\RightLabelBorder=0.2mm
\TopLabelBorder=0.2mm
\BottomLabelBorder=0mm

\LabelGridtrue % show grid for labels
\LabelInfotrue % show info for labels

\begin{document}
\Fields{\subclass\number\cutter}

\Merge{\jobname.dat}{%
  \addresslabel{
    \begin{center}
    \parbox{20mm}{
      \subclass\\
      \number\\
      \cutter}
    \end{center}
  }%
}%
\end{document}

不幸的是,LCC 的长度是可变的;它们通常长两到四行。有些有一个或多个 Cutter 编号;有些没有。这意味着这些编号被错误地拆分了。

标签分割不正确

以下哪种方法最好?

  • 覆盖宏以labels获取我想要的格式?

    (我在文档中找不到关于此内容的提示。)

  • 使用高级功能来textmerg处理可变长度格式?

    (手册中的“复杂示例”涉及“长度不确定但宽度固定的表格”。我相信在这种情况下宽度不是固定的。)

  • 使用不同的包,例如datatool

    大多数示例都datatool涉及 CSV,所以我不确定这会如何发挥作用。

以下是 git 存储库的链接,以便更轻松地获取文件:

https://github.com/nbeaver/lcc-label-question

答案1

设置\LeftLabelBorder为更高的值:

\documentclass[letterpaper,10pt]{article}
\usepackage[pass]{geometry} % because my default output paper would be A4

\usepackage[newdimens]{labels}
\LabelCols=3
\LabelRows=10
\LeftPageMargin=4mm
\RightPageMargin=4mm
\TopPageMargin=12.5mm
\BottomPageMargin=13mm
\InterLabelColumn=4mm
\InterLabelRow=0mm
\LeftLabelBorder=10mm    % <--- changed
\RightLabelBorder=0.2mm
\TopLabelBorder=0.2mm
\BottomLabelBorder=0mm

\LabelGridtrue % show grid for labels
\LabelInfotrue % show info for labels

\begin{document}
\labelfile{\jobname.dat}
\end{document}

在此处输入图片描述

相关内容