PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PSTricks - aneinander grezende Linien vereinen



Prof. Frink
27-08-2013, 18:01
Hallo,

wie verhindert man, dass zum Beispiel in diesem Fall



\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pstricks}
\begin{document}

\begin{pspicture}[showgrid=true](3,2)
\psline{|<->|}(0,1)(1,1)
\psline{|<->|}(1,1)(2,1)
\end{pspicture}

\end{document}


bei (1,1) eine scheinbar doppelt so dicke Linie entsteht? Ich möchte dort eine zentrierte Linie, derselben Stärke, wie die Linien bei (0,1) und (2,1).

Dasselbe Problem tritt bei angrenzenden Rechtecken, etc auf. Wäre an einer globalen Lösung sehr interessiert.

Danke & Peace

Frink

esdd
29-08-2013, 12:32
Hallo,

für Rechtecke und andere geschlossene Pfade gibt es die Option dimen, mit der man einstellen kann, ob die angegebenen Koordinaten innen, außen oder in der Mitte der Linie liegen:


\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pstricks}
\begin{document}
\begin{pspicture}[showgrid=true,dimen=middle](5,6)
\psframe(0,1)(3,3)
\psframe(3,2)(4,5)
\end{pspicture}
\end{document}

Wie man das Problem mit den Strichen an den Pfeilenden lösen kann, weiß ich aber leider nicht. Die Linien müssten an dem Punkt jeweils um 0.5\pslinewidth verlängert werden, damit die kurzen Striche übereinander statt nebeneinander liegen.

Gruß
Elke

Prof. Frink
29-08-2013, 13:59
Hey,

danke schon mal, für geschlossene Linienzüge funktioniert es, aber für mein Arrows-Beispiel ist wohl doch noch eine andere Lösung notwendig.


Die Linien müssten an dem Punkt jeweils um 0.5\pslinewidth verlängert werden, damit die kurzen Striche übereinander statt nebeneinander liegen.

Genau, im Prinzip will ich im unteren Code Bild 1 + Option soll Bild 2 ergeben, allerdings unabhängig von irgendwelchen konkreten Liniendicken etc., wie es hier noch der Fall ist.



\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage{pstricks}
\begin{document}


\begin{pspicture}[showgrid=true](2,2)
\psset{linewidth=2pt}
\psline{|<->|}(0,1)(1,1)
\psline{|<->|}(1,1)(2,1)
\end{pspicture}
\\
\begin{pspicture}[showgrid=true](2,2)
\psset{linewidth=2pt}
\psline{|<->|}(0,1)(1.03528 ,1)
\psline{|<->|}(0.96472 ,1)(2,1)
\end{pspicture}

\end{document}




Ich habe ein bisschen versucht, das intern ausrechnen zu lassen, aber soetwas ist in LaTeX ja meist ziemlich nervig und hat auch nicht funktioniert.

Vielleicht kennt ja noch jemand eine einfachere Lösung...

Danke & Grüße

Frink

esdd
29-08-2013, 14:58
Falls du tikz verwenden kannst, dort gibt es eine solche Option:


\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width=2pt]
\draw[lightgray,dotted] grid(2,2);
\draw[|<->|,shorten >=-0.5\pgflinewidth](0,1)--(1,1);
\draw[|<->|,shorten <=-0.5\pgflinewidth](1,1)--(2,1);
\end{tikzpicture}

\vspace{1cm}
\begin{tikzpicture}[line width=2pt]
\draw[lightgray,dotted] grid(4,5);
\draw(0,0)rectangle(3,3);
\draw(3,2)rectangle(4,5);
\end{tikzpicture}
\end{document}

Bezüglich PSTricks habe ich jetzt eine ähnliche Frage, allerdings mit schrägen Pfeilen, auf www.texwelt.de (http://texwelt.de/wissen/fragen/1530/wie-kann-ich-eine-pstricks-linie-um-die-halbe-linienbreite-verlangern-lassen) gestellt.
Gruß
Elke

Prof. Frink
29-08-2013, 15:04
Hey,

danke für den Hinweis, aber die Abbildung ist schon fertig in PSTricks, ich will sie jetzt nicht nur deswegen übersetzen und dann vielleicht noch festellen, dass es andere Probleme gibt. Es stört mich auch nicht so sehr, bzw. ich gebe dann einfach von Hand die errechneten, gewünschten Werte, wie oben an. Im konkreten Fall ist das für mich hinlänglich, aber für die Zukunft und für andere ist die Frage natürlich weiterhin von Interesse.

Viele Grüße

Frink

esdd
30-08-2013, 09:48
Auf www.texwelt.de (http://texwelt.de/wissen/fragen/1530/wie-kann-ich-eine-pstricks-linie-um-die-halbe-linienbreite-verlangern-lassen/1545) wurde die Frage jetzt von Qrbrrbirlbel beantwortet. Es geht ganz einfach mit |<* bzw. >|*


\begin{pspicture}[showgrid=true](2,2)
\psset{linewidth=2pt}
\psline{|<->|*}(0,1)(1 ,1)
\psline{|<*->|}(1 ,1)(2,1)
\end{pspicture}

Gruß
Elke

Prof. Frink
30-08-2013, 16:15
Super, danke. Das ist einer dieser Fälle, bei denen man genau weiß, dass es so eine Option einfach geben muss (aber sie erstmal nicht findet).
Vielen Dank jedenfalls für deine Hilfe.

Grüße

Frink