![LaTeX 可以按毫米坐标放置文本吗?](https://linux22.com/image/287145/LaTeX%20%E5%8F%AF%E4%BB%A5%E6%8C%89%E6%AF%AB%E7%B1%B3%E5%9D%90%E6%A0%87%E6%94%BE%E7%BD%AE%E6%96%87%E6%9C%AC%E5%90%97%EF%BC%9F.png)
我的系统会生成 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}