请考虑以下由 Thomas Söll 在 Manuel Luque 的PSTricks 博客:
% latex filename.tex
% dvips filename.dvi
% ps2pdf filename.ps
\documentclass[
a4paper,
landscape,
12pt
]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[
hmargin=2.4cm,
vmargin=3cm
]{geometry}
\usepackage{
pst-grad,
pst-coil,
pstricks-add
}
\psset{unit=1.3}
\pagestyle{empty}
%----------------------------------------------------------
%----- FlammenKontinuierlicher Farbverlauf bei Kurven -----
%----------------------------------------------------------
\makeatletter
\pst@addfams{pst-HSB}
\define@key[psset]{pst-HSB}{HueBegin}{%
\def\PstParametricplotHSB@HueBegin{#1}}
\define@key[psset]{pst-HSB}{HueEnd}{%
\def\PstParametricplotHSB@HueEnd{#1}}
\define@boolkey[psset]{pst-HSB}[Pst@]{HSB}[true]{}
\psset[pst-HSB]{HueBegin=0,HueEnd=1,HSB=true}
\psset{dimen=outer}
\def\parametricplotHSB{\pst@object{parametricplotHSB}}
\def\parametricplotHSB@i#1#2#3{{%
\begin@ClosedObj
\addto@pscode{%
/t #1 def
/dt #2 t sub \psk@plotpoints\space div def
/t t dt sub def
/Counter 0 def
1 setlinejoin
\psk@plotpoints {
/t t dt add def
/Counter Counter 1 add def
#3
\pst@number\psyunit mul exch
\pst@number\psxunit mul exch
1 Counter eq { moveto currentpoint /OldY ED /OldX ED }
{\ifPst@HSB
/PointY exch def
/PointX exch def
Counter \psk@plotpoints\space div
\PstParametricplotHSB@HueEnd\space
\PstParametricplotHSB@HueBegin\space sub mul
\PstParametricplotHSB@HueBegin\space add
1 1 sethsbcolor
OldX OldY PointX PointY lineto lineto
stroke
PointX PointY moveto
/OldX PointX def /OldY PointY def
\else lineto \fi } ifelse
} repeat }
\end@ClosedObj}
\ignorespaces}
\makeatother
%-------------------------------------------------------------------------------
\begin{document}
\begin{figure}[htbp]
\newhsbcolor{ColorC}{0.5 0.8 0}
\newhsbcolor{ColorD}{0.5 0.5 0.5}
\centering
\begin{pspicture}(-4,-5.8)(12,3.5)
\pspolygon[linewidth=3pt,linecolor=gray!40,linearc=0,bordercolor=black,border=1.1pt,fillstyle=gradient,gradmidpoint=0,gradangle=10,gradbegin=orange!80,gradend=white](-1.8,3.45)(-0.9,2)(-0.9,-1.6)(0.9,-1.6)(0.9,2.4)(-0.2,2.4)(-0.88,3.45)(-1.8,3.45)% Brennkammer mit F{\'u}llung
\pspolygon[linewidth=3pt,linecolor=gray!40,linearc=0,bordercolor=black,border=1.1pt](-1.8,3.45)(-0.9,2)(-0.9,-1.6)(0.9,-1.6)(0.9,2.4)(-0.2,2.4)(-0.88,3.45)(-1.8,3.45)% Brennkammer nur Rahmen
\pspolygon[linewidth=4pt,linecolor=gray!40,linearc=0,bordercolor=black,border=1.1pt](-1.85,-2.65)(8.75,-2.65)(8.75,3.45)(-1.85,3.45)% Rahmen des Kraftwerks
\pspolygon[fillstyle=solid,fillcolor=black, opacity=1,linewidth=0.8pt](-1.35,-0.92)(-1.25,-0.85)(-1,-0.85)(-1,-0.95)(-0.85,-0.95)(-0.85,-1.15)(-1,-1.15)(-1,-1.45)(-1.25,-1.45)(-1.35,-1.38)% Brenner
%-------------------
%----- Flammen -----
%-------------------
\pscustom[fillstyle=solid,fillcolor=yellow!50,linestyle=none]{%
\pscurve(-0.87,-1)(-0.4,-0.75)(-0.55,-0.4)(-0.4,-0.13)
\pscurve(-0.45,-0.33)(-0.2,-0.53)
\psline(-0.2,-0.53)(-0.2,-0.97)
\pscurve(-0.2,-0.97)(-0.6,-1.05)(-0.87,-1.01)
}
\pscustom[fillstyle=solid,fillcolor=yellow!50,linestyle=none]{%
\pscurve(-0.2,-0.53)(-0.17,-0.35)(0.1,-0.1)
\pscurve(0.1,-0.1)(-0.01,-0.4)(0,-0.6)
\pscurve(0,-0.6)(0.04,-0.52)(0.16,-0.46)
\pscurve(0.16,-0.46)(0.1,-0.6)(0.17,-0.8)(0,-0.98)(-0.2,-0.97)
\psline(-0.2,-0.97)(-0.2,-0.53)
}
\pscustom[fillstyle=solid,fillcolor=yellow!50,linestyle=none]{%
\pscurve(0.1,-0.7)(0.2,-0.6)(0.2,-0.36)(0.4,-0.1)
\pscurve(0.4,-0.1)(0.31,-0.29)(0.33,-0.4)(0.39,-0.6)(0.3,-0.8)(0.1,-0.86)
\psline(0.1,-0.86)(0.1,-0.7)
}
\psframe[linecolor=black,fillstyle=solid,fillcolor=black,opacity=1,linewidth=0.8pt](-1,-1.15)(-0.81,-0.95)
%-----------------------
%----- Kondensator -----
%-----------------------
\pscustom[linestyle=none,fillstyle=gradient,gradmidpoint=0,gradangle=0,gradbegin=white,gradend=magenta!80]{%
\psarcn[liftpen=0](6.8,-0.2){2}{190}{165}
\psline(!5.162 2 15 sin mul 0.2 sub)(5.162,0.92)(5.338,0.92)(!5.338 2 15 sin mul 0.2 sub)%
(!6.312 2 15 sin mul 0.2 sub)(6.312,0.92)(6.488,0.92)(!6.488 2 15 sin mul 0.2 sub)
\psarcn[liftpen=0](4.8,-0.2){2}{15}{-10}
\closepath
}
\pscustom[fillstyle=gradient,linestyle=none,gradmidpoint=0,gradangle=0,gradbegin=blue!70,gradend=cyan!60]{%
\psarcn[liftpen=0](6.8,-0.2){2}{195}{190}
\psarcn[liftpen=0](4.8,-0.2){2}{-10}{-15}
\closepath
}
\pscustom[linewidth=1.0pt]{%
\psarcn[liftpen=0](6.8,-0.2){2}{195}{165}
\psline(!5.162 2 15 sin mul 0.2 sub)(5.162,0.92)(5.338,0.92)(!5.338 2 15 sin mul 0.2 sub)%
(!6.312 2 15 sin mul 0.2 sub)(6.312,0.92)(6.488,0.92)(!6.488 2 15 sin mul 0.2 sub)
\psarcn[liftpen=0](4.8,-0.2){2}{15}{-15}
\closepath
}
%------------------------
%----- Wasserwendel -----
%------------------------
\psset{coilheight=0.495,coilwidth=1.3cm,coilaspect=52}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{250}{720}}
\rput(0.235,0.4){%
\parametricplotHSB[plotpoints=500,linewidth=1.73mm,HueBegin=0.6,HueEnd=0.84]{270}{90}{0.88 t cos mul 0.365 t sin mul}
}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{600}{1200}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=magenta,linewidth=0.045cm]{470}{1200}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{850}{1400}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=magenta,linewidth=0.045cm]{850}{1400}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=black,linewidth=0.07cm]{1260}{1550}}
\rput{90}(0,0){\psCoil[doubleline=true,linecolor=magenta,linewidth=0.045cm]{1220}{1550}}
%------------------------
\psline[linewidth=1.47mm,linecolor=magenta,linearc=0.15,bordercolor=black,border=1.1pt](0.2,1.943)(4.1,1.943)(4.1,1.6)
\psline[linewidth=1.47mm,linecolor=magenta,linearc=0.15,bordercolor=black,border=1.1pt](4.65,1.6)(4.65,1.943)(5.75,1.943)(5.75,1.6)
\psline[arrowinset=0,arrowscale=1.2,arrowlength=0.8,linewidth=0.6pt]{->}(5.25,0.5)(5.25,0.1)
\psline[arrowinset=0,arrowscale=1.2,arrowlength=0.8,linewidth=0.6pt]{->}(6.4,0.5)(6.4,0.1)
\pscircle[linewidth=0.8pt,fillstyle=solid,fillcolor=blue!20!green!70](8.3,-0.4){0.17}
\psline[linewidth=1.3mm,linecolor=blue!20!green!70,linearc=0.15,bordercolor=black,border=1.1pt]%
(8.18,-0.4)(5.1,-0.4)(5.1,-0.1)(9.4,-0.1)(9.4,-1.2)
\psline[linewidth=1.3mm,linecolor=blue!20!green!70,linearc=0.15,bordercolor=black,border=1.1pt]%
(8.423,-0.4)(9.1,-0.4)(9.1,-1.2)
%-----------------
%----- Fluss -----
%-----------------
\psset{linecolor=blue}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.05 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.15 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.25 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.35 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.45 sub}
\psplot{8.9}{9.8}{x 1600 mul sin 0.02 mul 1.55 sub}
%-------------------
%----- Turbine -----
%-------------------
\psset{linecolor=black}
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=blue!20!green!70,gradend=green!10]%
(3.9,0.9)(6.6,1.6)
\psline(4.9,0.9)(4.9,1.6)
%-----------------------------------
%----- Achse und Turbinenr{\'u}der -----
%-----------------------------------
\psframe[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.4,gradangle=0,gradbegin=ColorC,gradend=ColorD](3.7,1.2)(8.47,1.3)
%-----------------------------------
\pspolygon[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.5,gradangle=0,gradbegin=ColorC,gradend=ColorD](4,1.35)(4.8,1.5)(4.8,1.0)(4,1.15)
\pspolygon[fillstyle=vlines,hatchangle=0,hatchsep=2pt](4,1.35)(4.8,1.5)(4.8,1.0)(4,1.15)
%-----------------------------------
\pspolygon[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.5,gradangle=0,gradbegin=ColorC,gradend=ColorD](5.0,1.5)(5.7,1.35)(5.70,1.15)(5.0,1.0)
\pspolygon[fillstyle=vlines,hatchangle=0,hatchsep=2pt](5.0,1.5)(5.7,1.35)(5.70,1.15)(5.0,1.0)
%-----------------------------------
\pspolygon[gradientHSB=true,linestyle=none,fillstyle=gradient,linecolor=black,gradmidpoint=0.5,gradangle=0,gradbegin=ColorC,gradend=ColorD](5.8,1.35)(6.5,1.5)(6.5,1.0)(5.8,1.15)
\pspolygon[fillstyle=vlines,hatchangle=0,hatchsep=2pt](5.8,1.35)(6.5,1.5)(6.5,1.0)(5.8,1.15)
%-----------------------------------
\psframe[fillstyle=solid,linecolor=black,fillcolor=blue!20!green!70,dimen=inner,opacity=0.6](3.8,1.05)(3.9,1.45)
\psframe[fillstyle=solid,linecolor=black,fillcolor=blue!20!green!70,dimen=inner,opacity=0.6](6.6,1.1)(6.7,1.4)
%---------------------------------
%----- Generator und Erreger -----
%---------------------------------
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=blue!60!green!70,gradend=green!10,dimen=inner](6.95,1.1)(7,1.4)
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=blue!60!green!70,gradend=green!10](7,0.9)(8,1.6)
\psframe[fillstyle=gradient,linecolor=black,gradmidpoint=0,gradangle=0,gradbegin=yellow!90,gradend=yellow!20,dimen=inner](8,1.05)(8.4,1.45)
\psline[linecolor=black,linewidth=0.8pt](7.7,0.9)(7.7,0.8)(8.3,0.8)
\psline[linecolor=black,linewidth=0.8pt](7.6,0.9)(7.6,0.7)(8.3,0.7)
\psline[linecolor=black,linewidth=0.8pt](7.5,0.9)(7.5,0.6)(8.3,0.6)
\rput[l](8.38,0.8){\psplot[linecolor=black,linewidth=0.6pt]{-0.01}{0.16}{x 2500 mul sin 0.02 mul}}
\rput[l](8.38,0.7){\psplot[linecolor=black,linewidth=0.6pt]{-0.01}{0.16}{x 2500 mul sin 0.02 mul}}
\rput[l](8.38,0.6){\psplot[linecolor=black,linewidth=0.6pt]{-0.01}{0.16}{x 2500 mul sin 0.02 mul}}
%---------------------------------
\pspolygon[fillstyle=solid,fillcolor=black](8.2,-0.4)(8.36,-0.31)(8.36,-0.49)
\psframe[fillstyle=vlines,hatchangle=90,hatchsep=1.5pt,hatchcolor=red,linewidth=0.8pt](2.2,-0.8)(2.8,-0.2)
\pscircle[linewidth=0.8pt,fillstyle=solid,fillcolor=blue!70](3.2,-1.1){0.25}
\pspolygon[fillstyle=solid,fillcolor=black](3.05,-1.1)(3.3,-0.96)(3.3,-1.24)
\psline[linewidth=1.47mm,linecolor=blue!70,linearc=0.15,bordercolor=black,border=1.1pt](0.2,0.035)(2.5,0.035)(2.5,-1.1)(2.99,-1.1)
\psline[linewidth=1.47mm,linecolor=blue!70,linearc=0.15,bordercolor=black,border=1.1pt](3.4,-1.1)(5.8,-1.1)(! 5.8 -2 15 sin mul 0.2 sub 0.0175 add)
\psset{arrowinset=0,arrowscale=1.2,arrowlength=0.8,linewidth=0.6pt,arrows=->}
\psline(1.6,0.035)(1.2,0.035)
\psline(0.2,0.82)(-0.2,0.85)
\psline(1.2,1.943)(1.6,1.943)
\psline(5.025,1.943)(5.425,1.943)
\psline(7.5,-0.4)(7.1,-0.4)
\psline(7.5,-0.1)(7.9,-0.1)
%---------------------------------
{\tiny
\rput[t](-0.85,3,1){\shortstack[l]{%
Rauch-\strut\\[-0.5ex]\ \quad
gas-\strut\\[-0.5ex]\qquad
kanal\strut}
}
\rput[c](-1.2,-2){Brenner}
\psline[linewidth=0.6pt](-1.2,-1.9)(-1.2,-1.2)
\rput[c](0.25,-2){Brennkammer}
\psline[linewidth=0.6pt](0.25,-1.9)(0.25,-1.2)
\rput[l](2.9,-1.5){Pumpe}
\rput[lc](3.2,-0.3){\shortstack[l]{%
Vor-\strut\\[-0.5ex]
w{\"{a}}rm-\strut\\[-0.5ex]
anlage}
}
\rput[c](2.7,2.7){Frischdampf}
\psline[linewidth=0.6pt](2.7,1.95)(2.7,2.55)
\psline[linewidth=0.6pt](1.77,0.035)(1.77,0.22)
\rput[b](1.77,.25){\shortstack{%
Speise-\strut\\[-0.5ex]
wasser\strut}
}
\rput[c](4.4,2.7){\shortstack[c]{%
Hochdruck-\strut\\[-0.5ex]
turbine\strut}
}
\psline[linewidth=0.6pt](4.4,1.5)(4.4,2.5)
\rput[c](6.1,2.7){\shortstack{%
Niederdruck-\strut\\[-0.5ex]
turbine\strut}
}
\psline[linewidth=0.6pt](6.1,1.5)(6.1,2.5)
\rput[c](7.5,2.7){Generator}
\psline[linewidth=0.6pt](7.5,1.5)(7.5,2.5)
\rput[c](8.15,2.3){\shortstack{%
Erreger-\strut\\[-0.5ex]
maschine\strut}
}
\psline[linewidth=0.6pt](8.15,1.4)(8.15,2.1)
\rput[l](3.8,0.1){\shortstack{%
Konden-\strut\\[-0.5ex]
sator\strut}
}
\psline[linewidth=0.6pt](4.5,0.1)(5.0,0.1)
\rput[c](7.7,-0.8){K{\"{u}}hlwasser}
\psline[linewidth=0.6pt](7.7,-0.4)(7.7,-0.6)
\rput[l](9.1,-1.8){Fluss}
}
%---------------------------------
\rput[l](-2,-4.5){%
\psset{ArrowFill=true,arrowinset=0,arrowscale=0.7,arrowlength=0.5,framearc=0.05,dimen=outer,linecolor=gray!40}%
\psline[linewidth=0.7cm]{->}(12,0)(14,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(12,-0.35)(12.5,-0.35)(12.5,-1.0)
\psframe[linecolor=black](10,-0.8)(12,0.8)
\psline[linewidth=0.9cm]{->}(8,0)(10,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(8,-0.45)(8.5,-0.45)(8.5,-1.1)
\psframe[linecolor=black](6,-0.8)(8,0.8)
\psline[linewidth=1.1cm]{->}(4,0)(6,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(4,-0.55)(4.5,-0.55)(4.5,-1.2)
\psframe[linecolor=black](2,-0.8)(4,0.8)
\psline[linewidth=1.3cm]{->}(0,0)(2,0)
\psline[linewidth=0.2cm,linearc=0.3]{->}(0,-0.65)(0.5,-0.65)(0.5,-1.3)
\psframe[linecolor=black](-2,-0.8)(0,0.8)%
\rput[c](3,0.3){\psframebox[linecolor=white]{Rohre}}
\rput[c](3,-0.3){\psframebox[linecolor=white]{Kessel}}
\rput[l](4.1,0.2){\footnotesize potentielle}
\rput[l](4.1,-0.3){\footnotesize Energie}
\textcolor{red}{%
\rput[l](0.1,0.2){\footnotesize thermische}
\rput[l](0.1,-0.3){\footnotesize Energie}
\rput[l](8.1,0.2){\footnotesize kinetische}
\rput[l](8.1,-0.3){\footnotesize Energie}
\rput[l](12.1,0.2){\footnotesize elektrische}
\rput[l](12.1,-0.3){\footnotesize Energie}
\rput[c](-1,0){\psframebox[linecolor=white]{Brenner}}
\rput[c](7,0){\psframebox[linecolor=white]{Turbine}}
\rput[c](11,0){Generator}
\rput[l](12.7,-0.85){\footnotesize WE}
\rput[l](8.7,-0.95){\footnotesize WE}
\rput[l](4.7,-1.05){\footnotesize WE}
\rput[l](0.7,-1.15){\footnotesize WE}
}}
\end{pspicture}
\end{figure}
\end{document}
当我尝试使用 缩放图形时,\psset{unit=1.3}
烤箱内部水管的螺旋部分绘制不正确。有人能帮我解决这个问题吗?
答案1
根据要求做一个简短的回答:
你不应该混合绝对测量coilwidth=1cm
和相对测量,coilheight=0.495
因为只有后者会受到\psset{unit=1.3}
答案2
作为评论,它非常简短。
除了@ratatosk的答案之外,您还可以使用 缩放整个图片\psscalebox{<scale factor>}{<your picture>}
。无论您使用绝对测量还是相对测量,它都可以工作。
建议:
如果您不确定是否使用绝对测量还是相对测量,请参考以下指南。
仅对不需要放大或缩小的属性使用绝对测量值。最佳候选是。例如,
linewidth
您可以将其指定为。linewidth=3pt
对于可能需要放大或缩小的属性,请使用相对测量值。例如,矩形的尺寸
\psframebox(3,4)
。