如何根据图像宽度和高度的分数改变垂直和水平单位?

如何根据图像宽度和高度的分数改变垂直和水平单位?

我需要在 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-escapeauto-pst-pdfpdf

修改的代码:

\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}

在此处输入图片描述

相关内容