我想在 A4(210mm x 297mm)纸上生成多个具有不同代码的标签。想法是将 A4 纸切成两半水平以便获得两个宽标签(297mm x 105mm)。因此,中心两侧的切割指南(灰色)将非常有用。
我想要实现的目标如下:
为了生成具有所需代码的多个 PDF,textmerg
此 MWE 中使用了包,通过从文件中检索代码来实现jobname.dat
。
平均能量损失
\documentclass[12pt]{scrartcl}
\usepackage{textmerg}
\usepackage{graphicx}
\usepackage{fontspec}
\setmainfont{Arial Black}
\usepackage{pdflscape}
\begin{document}
\Fields{\onecode\twocode}
\Merge{jobname.dat}{
\begin{landscape}
\pagestyle{empty}
\centering
\topskip4em \resizebox{!}{0.12\textwidth}{\noindent\onecode} \\ \vspace{6cm} \resizebox{!}{0.12\textwidth}{\noindent\twocode}\\
\cleardoublepage%
\end{landscape}
}
\end{document}
作业名称.dat
DDD-GG-XX
DDD-UU-DD-XX
DDD-GG-XX
DDD-PP-VV-XX
输出不居中,也没有切割指南。我的问题是,如何使用 tikz 实现以下效果:
- 每页两个代码,每个代码位于页面中央
- 缩放文本的能力
- 绘制居中的灰色切割指南,将 A4 纸切成相等的两半。
- 横向使用 A4 纸,留出合理的边距空间,显然是出于美观的考虑。
答案1
这将为每页创建两个框架,每个框架.8\paperwidth
宽 4 厘米,高 4 厘米。要删除边缘,请使用\newflowframe
而不是\newflowframe*
。
\documentclass[fontsize=60pt,landscape,oneside]{scrartcl}
\usepackage{textmerg}
\usepackage{fontspec}
\setmainfont{Arial Black}
\usepackage{flowfram}
\newlength{\pagebottom}
\pagebottom=\dimexpr 1in+\topmargin+\headheight+\headsep+\textheight-\paperheight\relax
\newlength{\pageedge}
\pageedge=\dimexpr -1in-\oddsidemargin\relax
\newflowframe*{.8\paperwidth}{4cm}{\dimexpr\pageedge+.1\paperwidth}{\dimexpr\pagebottom+.75\paperheight-2cm}
\newflowframe*{.8\paperwidth}{4cm}{\dimexpr\pageedge+.1\paperwidth}{\dimexpr\pagebottom+.25\paperheight-2cm}
\pagestyle{empty}
\Fields{\code}
\parindent=0pt
\begin{document}
\Merge{jobname.dat}{\parbox[c][4cm][c]{\linewidth}{\centering\code}\newpage}
\end{document}
修改后的解决方案:这些填满整个页面并使用尽可能大的字体。
\parbox
请注意,如果您能弄清楚如何使用 KOMA 将边距设置为 0,那么就可以仅使用 es 执行相同的操作。
\documentclass[fontsize=100pt,landscape,oneside]{scrartcl}
\usepackage{textmerg}
\usepackage{fontspec}
\setmainfont{Arial Black}
\usepackage{flowfram}
\newlength{\pagebottom}
\pagebottom=\dimexpr 1in+\topmargin+\headheight+\headsep+\textheight-\paperheight\relax
\newlength{\pageedge}
\pageedge=\dimexpr -1in-\oddsidemargin\relax
\newflowframe{\paperwidth}{.5\paperheight}{\pageedge}{\dimexpr\pagebottom+.5\paperheight}
\newflowframe{\paperwidth}{.5\paperheight}{\pageedge}{\pagebottom}
\pagestyle{empty}
\Fields{\code}
\parindent=0pt
\begin{document}
\Merge{jobname.dat}{\parbox[c][.5\paperheight][c]{\linewidth}{\centering\code}\newpage}
\end{document}
此解决方案使用 TikZ。(需要运行两次。)
\documentclass[fontsize=100pt,landscape,oneside]{scrartcl}
\usepackage{textmerg}
\usepackage{fontspec}
\setmainfont{Arial Black}
\usepackage{tikz}
\usetikzlibrary{calc}
\pagestyle{empty}
\Fields{\codeone \codetwo}
\begin{document}
\Merge{jobname.dat}{\begin{tikzpicture}[remember picture, overlay]
\node[inner sep=0pt] at ($(current page.center)!.5!(current page.north)$) {\codeone};
\node[inner sep=0pt] at ($(current page.center)!.5!(current page.south)$) {\codetwo};
\end{tikzpicture}
\newpage}
\end{document}
答案2
\documentclass[14pt]{article}
\usepackage[margin=1cm,landscape,nohead,nofoot]{geometry} %option: use `showframe` key to show the frame
\usepackage{textmerg}
\usepackage{xcolor}
\usepackage{graphicx} % scalebox
\usepackage{fontspec}
\setmainfont{Arial Black}
\begin{document}
\Fields{\onecode\twocode}
\Merge{jobname.dat}{
\pagestyle{empty}
\centering
\begin{minipage}[][0.5\textheight][c]{\textwidth}
\centering
\scalebox{9}[12]{\onecode} % tweak the {x}[y] values
\end{minipage}
\textcolor{gray!10!white}{\rule{\linewidth}{1pt}} % cutting guide
\begin{minipage}[][0.5\textheight][c]{\textwidth}
\centering
\scalebox{9}[12]{\twocode}
\end{minipage}
\cleardoublepage%
}
\end{document}
输出