在邀请函上插入姓名,每页两个特定位置

在邀请函上插入姓名,每页两个特定位置

我正在制作婚礼请柬,希望回复中写上对方的姓名。我还希望姓名出现在请柬上另一个非常具体的位置。请柬只占半页,所以我想每页写两个。因此,我需要第二个人的姓名出现在页面上两个不同的非常具体的位置。然后下一页应该有第三人和第四个人,依此类推。我使用 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

相关内容