PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text ausrichten an horizontaler Achse eines Quadrats



DieterH
06-07-2009, 21:32
Hallo,

ich möchte in der Linken Hälfte Quadrate verschiedener Kantenlängen setzen, vertikal untereinander. Die vertikalen Symmetrieachsen aller dieser Quadrate liegen auf einer Geraden. Das klappt auch.

Rechts neben jedes Quadrat möchte ich einen kurzen Text unterschiedlicher Schriftgröße schreiben. Dabei kommt es mir darauf an, dass der jeweilige Text auf der waagrechten Symmetrieachse seines links neben ihm stehenden Quadrats ausgerichtet ist. Damit habe ich Probleme.

Anbei mein MB (als "TextQ.txt", bei dem ich sehr viel ausprobiert habe, aber nicht weiterkomme. Interessanterweise ist der Text des ersten Quadrats wie gewünscht auf dessen waagrechter Symmetrieachse, die Texte der anderen Quadrate trotz formal identischer Übereinstimmungen in den Parametern jedoch nicht.

Wer kann mir bitte weiterhelfen und eine Lösung anbieten?
Danke im voraus
Gruss
Dieter

u_fischer
07-07-2009, 10:07
Nun ein Fehler ist schon mal, dass die picture-Umgebungen anders relativ zur Grundlinie liegen:


\documentclass{scrbook}
\setlength{\unitlength}{10mm}
\begin{document}

x1\begin{picture}(4,4)(0,0)
\thinlines
\put(0,0){\line(1,0){4}}
\put(0,4){\line(1,0){4}}
\put(0,4){\line(0,-1){4}}
\put(4,4){\line(0,-1){4}}
\end{picture}

\bigskip

x2\begin{picture}(2,2)(-1,1)
\thinlines
\put(0,0){\line(1,0){2}}
\put(0,2){\line(1,0){2}}
\put(0,2){\line(0,-1){2}}
\put(2,2){\line(0,-1){2}}
\end{picture}

\end{document}

Zweitens übertreibst du es mit den Boxen. Z.B.

\begin{minipage}[t]{\lenTmpC}
\usebox{\tmpBoxC}
\end{minipage}

Was soll die minipage hier? \tmpboxC enthält doch bereits \begin{minipage}{\lenTmpC} und das unterschiedliche Positionsargument kann ja nur dein Leben verkomplizieren.

Drittens schlage ich dir für dein Quadrat sowas vor:


\documentclass{scrbook}
\newcommand\meinQuadrat[1]{%
\begingroup
\fboxsep0pt
\makebox[0.45\textwidth]{%
\raisebox{-0.5\height}{%
\framebox[#1]{\rule{0pt}{#1}}}}%
\endgroup}
\begin{document}
x\meinQuadrat{40mm}

x\meinQuadrat{20mm}
\end{document}

Und viertens: wenn man Boxen schachtelt empfiehlt es sich Buchstaben wie bei mir das x einzustreuen, damit man sieht, wo in der Box jeweils die Grundlinie ist.

Ulrike fischer

DieterH
07-07-2009, 12:26
Ulrike,

danke für Deinen Lösungsvorschlag. Beim Ausprobieren erhalte ich folgende Fehlermeldung:

! Missing number; treated as zero.
<to be read again>
\color@endgroup
I.10 x\meinQuadrat{40mm}

Ich weiss nicht, an welcher Stelle er eine Zahl (als Parameter) erwartet.
Kannst Du mir bitte einen Tipp geben?

Danke
Gruss
Dieter

u_fischer
07-07-2009, 12:35
Also bei mir funktioniert mein Beispiel tadellos, sowohl mit pdflatex als auch mit latex.

Ersetze mal scrbook mit book. Wenn dann der Fehler verschwindet, füge mal \listfiles ein (und benutze wieder scrbook) und vergleiche deine Versionen mit meinen
*File List*
scrbook.cls 2009/04/03 v3.03a KOMA-Script document class (book)
scrkbase.sty 2009/04/03 v3.03a KOMA-Script package (KOMA-Script-dependent ba
sics and keyval usage)
scrbase.sty 2009/04/03 v3.03a KOMA-Script package (KOMA-Script-independent
basics and keyval usage)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
scrlfile.sty 2009/03/25 v3.03 KOMA-Script package (loading files)
tocbasic.sty 2009/01/20 v3.02a(package)
scrsize11pt.clo 2009/04/03 v3.03a KOMA-Script font size class option (11pt)
typearea.sty 2009/04/03 v3.03a KOMA-Script package (type area)


Wenn der Fehler auch mit book auftritt, sende die log-Datei.

Ulrike Fischer

DieterH
07-07-2009, 13:13
Ulrike,

anbei eine ZIP-Datei mit allen benötigten Dateien.

Danke
Gruss
Dieter

rais
07-07-2009, 13:49
Moin moin,

Du hast Ulrikes Code nicht 1:1 kopiert:


\documentclass{scrbook}
\listfiles
\newcommand\meinQuadrat[1]{%
\begingroup
\fboxsep0pt
\makebox[0.45\textwidth]{%
\raisebox{-0.5\height}{%
\framebox[#1]{\rule{0pt}{#1}}}}%<--
\endgroup}
\begin{document}
x\meinQuadrat{40mm}

x\meinQuadrat{20mm}
\end{document}

MfG

u_fischer
07-07-2009, 13:50
Du hast das zweite Argument von \rule vergessen:

\rule{0pt}{#1}

Ulrike Fischer

DieterH
07-07-2009, 13:59
Hallo Ulrike,
hallo Rainer,

danke für euren Hinweis. Das Beispiel funktioniert.

Man soll halt ein Beispiel nicht abtippen, sondern über USB-Stick übernehmen. ;)
(Ich darf mit meinem privaten Notebook nicht ins Firmennetz)

Gruss
Dieter