PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pstricks: Problem Bemaßung definieren



abaSisa
30-12-2008, 22:37
Hallo,

ich gehe gerade meine ersten Schritte mit LaTeX und bin dabei auch schon die ersten eigenen Befehle definieren dürfen, wobei mir die Themen im Forum schon sehr weitergeholfen haben.

Ich benötige derzeit mehrere Maßketten und habe dafür einen Befehl definiert, der auch ausgeführt wird.
Mein Problem besteht lediglich beim wiederholten Ausführen. Wenn ich zwei (oder mehr) horizontale Bemaßungen anlegen, dann befindet sich nur die erste an der richtigen stelle, während alle anderen immer weiter verschoben werden. Bei mehreren vertikalen Bemaßungen ist dies nicht der Fall. Kann mir bitte jmd. erklären, warum das so ist und was ich dagegen machen kann.

Anbei ein Minimalbeispiel mit jeweils zwo horizontalen und vertikalen Bemaßungen:


\documentclass[12pt,a4paper]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{pstricks,pst-node}
\usepackage{amsmath,amssymb,amstext}


\makeatletter
\def\BemM{\@ifnextchar[\BemM@i{\BemM[1]}}
\def\BemM@i[#1]#2(#3,#4)(#5,#6){%
\begingroup\psscalebox{#1}{\psset{linewidth=1pt}%
\setlength{\unitlength}{1.0cm}
\pcline[offset=0pt]{|<->|}(#3,#4)(#5,#6)
\ncput*[nrot=:U]{\textbf{#2}}
}
\endgroup%
}
\makeatother

\begin{document}


\begin{pspicture}[showgrid=true](0,0)(7,4)
\BemM{$r\cdot\sin\beta$}(0.5,1)(3.5,1)
\BemM{$r\cdot\sin\beta$}(0.5,2)(3.5,2)

\BemM{$r\cdot\sin\beta$}(4,0.5)(4,3.5)
\BemM{$r\cdot\sin\beta$}(6,0.5)(6,3.5)
\end{pspicture}


\end{document}

Vielen Dank für Eure Hilfe.

abaSisa

voss
30-12-2008, 23:23
Mein Problem besteht lediglich beim wiederholten Ausführen. Wenn ich zwei (oder mehr) horizontale Bemaßungen anlegen, dann befindet sich nur die erste an der richtigen stelle, während alle anderen immer weiter verschoben werden. Bei mehreren vertikalen Bemaßungen ist dies nicht der Fall. Kann mir bitte jmd. erklären, warum das so ist und was ich dagegen machen kann.


das sind _immer_ Leerzeichen, die man sich einfängt:


\makeatletter
\def\BemM{\@ifnextchar[\BemM@i{\BemM[1]}}
\def\BemM@i[#1]#2(#3,#4)(#5,#6){%
\begingroup\psscalebox{#1}{\psset{linewidth=1pt}%
\pcline[offset=0pt]{|<->|}(#3,#4)(#5,#6)%
\ncput*[nrot=:U]{\textbf{#2}}}%
\endgroup\ignorespaces}
\makeatother


hilft hier

Herbert

abaSisa
31-12-2008, 09:35
Vielen Dank an Herbert.

Jetzt funzt alles, wie es soll.

War ja klar, das es so einfach ist... ;)

Noch einen Guten Rutsch ins neue Jahr.

abaSisa