如何轻松调整 pstricks 图片的大小?

如何轻松调整 pstricks 图片的大小?

我在一个独立文件中测试我的图表,当我得到我想要的图表时,我会将其与文本一起传递到我的主文件中。

我该如何做才能适应尺寸?

因为,有时我想将 3 幅图像排成一行,并且需要调整原始 pstricks 图片的大小。

假设 Herbert 在其他帖子中输入了以下代码:

\documentclass{article}
\usepackage{pstricks}
\newpsobject{pslineA}{psline}{linewidth=6\pslinewidth, linecolor=green}
\newpsobject{pslineB}{psline}{linewidth=10\pslinewidth, linecolor=red}

\begin{document}
\begin{pspicture}(5,5)
  \psline(0,1)(5,1)
  \psline[linewidth=1mm](0,2)(5,2)
  \pslineA(0,3)(5,3)
  \pslineB(0,4)(5,4)
\end{pspicture}
\end{document}

有没有什么简单的方法psset/xunit/yunit

我认为改变数字

\psset{xunit=1cm,yunit=1cm}

我可以得到我想要的,但是...不行!我改变了这个值,图片的长度还是一样。

答案1

更改单位(单位本身和线宽)调整图像大小:

\documentclass{article}

\usepackage[pdf]{pstricks}
\newpsobject{pslineA}{psline}{linewidth=6\pslinewidth, linecolor=green}
\newpsobject{pslineB}{psline}{linewidth=10\pslinewidth, linecolor=red}

\begin{document}

\begin{pspicture}(5,5)
  \psline(0,1)(5,1)
  \psline[linewidth=1mm](0,2)(5,2)
  \pslineA(0,3)(5,3)
  \pslineB(0,4)(5,4)
\end{pspicture}\\[2cm]

\psset{unit =1.5cm, linewidth=1.5\pslinewidth}
\begin{pspicture}(5,5)
  \psline(0,1)(5,1)
  \psline[linewidth=1mm](0,2)(5,2)
  \pslineA(0,3)(5,3)
  \pslineB(0,4)(5,4)
\end{pspicture}
\end{document} 

在此处输入图片描述

答案2

将线宽设置为的倍数,\pslinewidth将其设置为绝对\psset{unit=1.5}值,这就是为什么设置没有改变的原因。将其与

\newpsobject{pslineA}{psline}{linewidth=0.05, linecolor=green}
\newpsobject{pslineB}{psline}{linewidth=0.2, linecolor=red}

这是相对线宽设置,指的是当前单位,例如 1cm。然后你可以说\psset{unit=..}

\psscalebox{<value>}{%
  \begin{pspicture}(..)(..)
  ...
  \end{pspicture}}

用于重新调整pspicture环境。

答案3

最佳实践建议

  1. PSTricks 中的长度接受相对单位或绝对单位。

    a. 使用相对单位来表示您现在或将来可能想要全局缩放的长度。这种情况的最佳候选是这样的坐标,例如,其中是一个宽度相对单位和高度相对单位\psframe(2,3)的矩形,这些相对单位基于给定的值(默认=1cm)和(默认=1cm)。23xunityunit

    b. 对于现在或将来可能不想全局缩放的长度,请使用绝对单位。例如,这种情况的最佳候选是线宽。

  2. 如果您只想缩放相对单位的长度,请通过、 或unit设置xunit基本单位。有关这些的更多详细描述,请参阅手册。yunitrunit

  3. 如果您想要缩放所有内容而不考虑其单位(相对或绝对),请使用\psscalebox\psscalebox甚至可以缩放字符。

  4. 通过同时使用unit(或其变体)和\psscalebox,您可以调整图表以使其长度和字符具有比例尺寸。

看看它怎么运作:

\documentclass[preview,border=12pt]{standalone}
\usepackage{pstricks}
\newpsobject{pslineA}{psline}{linewidth=6\pslinewidth, linecolor=green}
\newpsobject{pslineB}{psline}{linewidth=10\pslinewidth, linecolor=red}

\def\foo#1{%
\psset{unit=#1}
\begin{pspicture}(5,5)
  \psline(0,1)(5,1)
  \psline[linewidth=1mm](0,2)(5,2)
  \pslineA(0,3)(5,3)
  \pslineB(0,4)(5,4)
    \rput(2.5,2.5){\color{cyan}$\displaystyle \frac{a}{b}=\frac{c}{d}$}
\end{pspicture}}

\begin{document}
\noindent
\foo{1cm}\\
\psscalebox{3}{\foo{.5}}
\end{document}

在此处输入图片描述

答案4

也有\psresizebox类似的问题提到这里。此方法会重新缩放图中的所有内容(包括文本),如果您不想弄乱对齐,这种方法会很有用。我使用它来包含我用 inkscape 创建的 pstricks 图像,如下所示:

\resizebox{\textwidth}{!}{\input{img/pstricksimage}}

相关内容