
Моя система генерирует письма и шаблоны LaTex; однако мой клиент должен заполнять предварительно созданные формы, которые он не контролирует. Я хотел бы заполнить эти формы, измерив координаты в мм, а затем разместить текст, используя эти координаты в мм в качестве отправной точки. Затем я могу печатать прямо поверх существующих бумажных форм.
В идеале я бы хотел, чтобы LaTeX функционировал примерно так:
\command{x coordinate}{y coordinate}{text1}\\
\command{x coordinate}{y coordinate}{text2}\\
\command{x coordinate}{y coordinate}{text3}\\
\command{x coordinate}{y coordinate}{text4}\\
\command{x coordinate}{y coordinate}{text5}\\
\command{x coordinate}{y coordinate}{text6}\\
В случае изменения формы клиента я могу просто изменить координаты. Возможен ли такой подход?
решение1
Один из вариантов с использованием TikZ. Все расстояния измеряются от верхнего левого угла бумаги (это можно легко изменить, выбрав другую исходную точку):
\documentclass{article}
\usepackage{tikz}
\newcommand\PlaceText[3]{%
\begin{tikzpicture}[remember picture,overlay]
\node[outer sep=0pt,inner sep=0pt,anchor=south west]
at ([xshift=#1,yshift=-#2]current page.north west) {#3};
\end{tikzpicture}%
}
\begin{document}
\PlaceText{20mm}{30mm}{First text}
\PlaceText{50mm}{30mm}{Second text}
\PlaceText{60mm}{70mm}{Third text}
\end{document}
решение2
С textpos
:
\documentclass[a4paper]{article}
\usepackage[overlay,absolute]{textpos}
\newcommand\PlaceText[3]{%
\begin{textblock*}{10in}(#1,#2) %% change width of box from 10in as you wish
#3
\end{textblock*}
}%
\textblockorigin{-5mm}{0mm} %% Default origin top left corner and it can be changed in this line
\begin{document}
\PlaceText{0mm}{0mm}{Origin}
\PlaceText{20mm}{30mm}{First text}
\PlaceText{50mm}{30mm}{Second text}
\PlaceText{60mm}{70mm}{Third text}
\end{document}