我需要在 PDF 表单上叠加一些文本。由于将 PDF 表单转换为 EPSpdftops
会产生不令人满意的结果,因此我不会在下面使用 PSTricks 代码。
\documentclass[pstricks,border=12pt]{standalone}
\def\M{4}% columns
\def\N{4}% rows
\def\scale{1}% scale
\def\filename{example-image-a}% filename
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=\scale]{\filename}}
\addtopsstyle{gridstyle}
{
gridcolor=yellow,
subgridcolor=gray,
subgriddiv=10,
griddots=0,
subgriddots=5,
gridwidth=0.4pt,
subgridwidth=0.2pt,
}
\psset
{
xunit=0.5\dimexpr\wd\IBox/\M,
yunit=0.5\dimexpr\ht\IBox/\N,
}
\begin{document}
\begin{pspicture}[showgrid=top](-\M,-\N)(\M,\N)
\rput(0,0){\usebox\IBox}
\rput[bl](1,1){This is a text.}
\end{pspicture}
\end{document}
我想要实现的输出如下所示。
相反,我将使用 TikZ。我的问题是如何在 TikZ 中设置水平和垂直单位。更准确地说,如何在 TikZ 中执行以下操作?
\psset
{
xunit=0.5\dimexpr\wd\IBox/\M,
yunit=0.5\dimexpr\ht\IBox/\N,
}
TikZ 中的 MWE
\documentclass[tikz,12pt,dvipsnames,border=12pt]{standalone}
\def\M{4}% columns
\def\N{4}% rows
\def\scale{1}% scale
\def\filename{example-image-a.pdf}% filename
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=\scale]{\filename}}
\begin{document}
\begin{tikzpicture}[inner sep=0,x=0.5\wd\IBox/\M\relax,y=0.5\ht\IBox/\N\relax]
\node (image) at (0,0) {\usebox\IBox};
\node at (1,1) {some text goes here};
\draw[help lines,red,step=1](-\M,-\N) grid (\M,\N);
\end{tikzpicture}
\end{document}
完成!问题解决了!
答案1
您不必将 pdf 转换为 ps,因为 pstricks 代码可以用 编译pdflatex
:您只需使用选项加载 pstricks并使用开关 (MiKTeX) 或(TeXLive、MacTeX)pdf
启动编译器。然后 pstricks 将启动,您将获得一个图像。--enable-write18
--shell-escape
auto-pst-pdf
pdf
修改的代码:
\documentclass[border=12pt]{standalone}%
\def\M{4}% columns
\def\N{4}% rows
\def\scale{1}% scale
\def\filename{example-image-a}% filename
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=\scale]{\filename}}
\usepackage[pdf]{pstricks}
\addtopsstyle{gridstyle}
{
gridcolor=yellow,
subgridcolor=gray,
subgriddiv=10,
griddots=0,
subgriddots=5,
gridwidth=0.4pt,
subgridwidth=0.2pt,
}
\psset
{
xunit=0.5\dimexpr\wd\IBox/\M\relax,
yunit=0.5\dimexpr\ht\IBox/\N\relax,
}
\begin{document}
\begin{pspicture}[showgrid=top](-\M,-\N)(\M,\N)
\rput(0,0){\usebox\IBox}
\rput[bl](1,1){This is a text.}
\end{pspicture}
\end{document}