我在一个独立文件中测试我的图表,当我得到我想要的图表时,我会将其与文本一起传递到我的主文件中。
我该如何做才能适应尺寸?
因为,有时我想将 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
最佳实践建议
PSTricks 中的长度接受相对单位或绝对单位。
a. 使用相对单位来表示您现在或将来可能想要全局缩放的长度。这种情况的最佳候选是这样的坐标,例如,其中是一个宽度相对单位和高度相对单位
\psframe(2,3)
的矩形,这些相对单位基于给定的值(默认=1cm)和(默认=1cm)。2
3
xunit
yunit
b. 对于现在或将来可能不想全局缩放的长度,请使用绝对单位。例如,这种情况的最佳候选是线宽。
如果您只想缩放相对单位的长度,请通过、 或
unit
设置xunit
基本单位。有关这些的更多详细描述,请参阅手册。yunit
runit
如果您想要缩放所有内容而不考虑其单位(相对或绝对),请使用
\psscalebox
。\psscalebox
甚至可以缩放字符。通过同时使用
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}}