我正在制作婚礼请柬,希望回复中写上对方的姓名。我还希望姓名出现在请柬上另一个非常具体的位置。请柬只占半页,所以我想每页写两个。因此,我需要第二个人的姓名出现在页面上两个不同的非常具体的位置。然后下一页应该有第三人和第四个人,依此类推。我使用 textpos 包在整个请柬上放置图形,并尝试使用 datatool 包从 .txt 文件中放置姓名,但我没有成功。有什么想法吗?这是我迄今为止做得不够好的工作。
\documentclass[11pt,a4paper]{article}
\usepackage[absolute]{textpos}
\usepackage{datatool}
\DTLloadrawdb{database}{Database.txt}
\usepackage{datatool}
\begin{document}
\DTLforeach{database}{\name=Name}{
\begin{textblock*}{1in}(1in,1in)
\name
\end{textblock*}
}
\DTLforeach{database}{\name=Name}{
\begin{textblock*}{1in}(2in,1in)
\name
\end{textblock*}
}
\DTLforeach{database}{\name=Name}{
\begin{textblock*}{1in}(2in,2in)
\name
\end{textblock*}
}
\DTLforeach{database}{\name=Name}{
\begin{textblock*}{1in}(1in,2in)
\name
\end{textblock*}
}
\end{document}
答案1
这应该可以:
\documentclass[11pt,a4paper]{article}
\usepackage[absolute]{textpos}
\usepackage{datatool}
\DTLloadrawdb{database}{Database.txt}
\pagestyle{empty}
\begin{document}
\newcounter{PlaceOnPage}
\DTLforeach{database}{\name=Name}{
\begin{textblock*}{1in}(1in,1in)
\name
\end{textblock*}
\begin{textblock*}{1in}(2in,1in)
\name
\end{textblock*}
\ifcase\value{PlaceOnPage}\relax
\textblockorigin{0pt}{0.5\paperheight}
\stepcounter{PlaceOnPage}
\or
\null\clearpage
\textblockorigin{0pt}{0pt}
\setcounter{PlaceOnPage}{0}
\fi
}
\end{document}
为了让每页上有两个以上的名称,您可以将 -construct 扩展\ifcase
为如下所示,并可能添加\usepackage[landscape]{geometry}
到序言中。
\ifcase\value{PlaceOnPage}\relax
\textblockorigin{0pt}{0.5\paperheight}
\stepcounter{PlaceOnPage}
\or
\textblockorigin{0.5\paperwidth}{0pt}
\stepcounter{PlaceOnPage}
\or
\textblockorigin{0.5\paperwidth}{0.5\paperheight}
\stepcounter{PlaceOnPage}
\or
\null\clearpage
\textblockorigin{0pt}{0pt}
\setcounter{PlaceOnPage}{0}
\fi