Discussion:
Frage zu pstricks: psframebox
(zu alt für eine Antwort)
Herbert Voss
2004-04-01 06:09:19 UTC
Geht das ueberhaupt oder bin ich ganz auf dem falschen Dampfer?
Analog wuerde ich gerne auch mit \pscirclebox verfahren.
\documentclass{article}
\usepackage{pstricks}
\def\inhalt#1{\makebox[1cm]{#1}}

\begin{document}

\psframebox{\inhalt{A}} und \psframebox{\inhalt{BBBBB}}

\pscirclebox{\inhalt{A}} und \pscirclebox{\inhalt{BBBBB}}
\end{document}

Herbert
Uwe Siart
2004-04-01 07:27:17 UTC
Problem ist), haette aber gerne ein Moeglichkeit die Groesze des Rahmens
absolut festzulegen, so das zwei nebeneinander stehende Boxen gleich
Packe den Inhalt in eine \parbox und lege deren Höhe und Breite fest:

\documentclass{article}
\usepackage{pstricks}

\newcommand{\FixedSizeFrame}[1]{%
\psframebox[framesep=0]{%
\parbox[c][1cm][c]{2cm}{\centering #1}%
}%
}

\begin{document}
\FixedSizeFrame{foo} \FixedSizeFrame{blah}
\end{document}
--
Uwe
Herbert Voss
2004-04-01 13:18:54 UTC
Post by Uwe Siart
\newcommand{\FixedSizeFrame}[1]{%
\psframebox[framesep=0]{%
\parbox[c][1cm][c]{2cm}{\centering #1}%
es ist besser hier \makebox[2cm]{#1} zu nehmen, sonst
gibt es bei zu engen Boxen Probleme.

Herbert


\documentclass[12pt]{article}
\usepackage{pstricks}
\def\bBox#1#2{\makebox[#1]{#2}}
\def\bhBox#1#2{\parbox[c][#1][c]{#1}{\makebox[#1]{#2}}}
\def\bhpBox#1#2{\parbox[c][#1][c]{#1}{\centering #2}}

\begin{document}
%\psset{framesep=0}
\psframebox{\bBox{1.3cm}{A}} und \psframebox{\bBox{1.3cm}{BBBBB}}

\psframebox{\bhBox{1.3cm}{A}} und \psframebox{\bhBox{1.3cm}{BBBBB}}

\psframebox{\bhpBox{1.3cm}{A}} und \psframebox{\bhpBox{1.3cm}{BBBBB}}

\end{document}
--
http://TeXnik.de/
http://PSTricks.de/
Uwe Siart
2004-04-01 13:46:16 UTC
Post by Herbert Voss
es ist besser hier \makebox[2cm]{#1} zu nehmen, sonst
gibt es bei zu engen Boxen Probleme.
Gute Idee, diesen Fall so abzufangen. Werde ich gleich in meine Makros
einbauen. Vielleicht noch zur Erklärung für den OP eine Verdeutlichung
des Unterschieds zwischen einer \makebox und \parbox + \centering:

\documentclass{article}
\begin{document}
\frame{\makebox[1cm]{BBBBBB}}\hspace{10mm}%
\frame{\parbox{1cm}{\centering BBBBBB}}
\end{document}

Wenn die Boxen groß genug sind, ist beides äquivalent. Fast. Denn die
\makebox ermöglicht keinen Umbruch. Ist aber nur wichtig, wenn man viel
Text reinpacken will. Dann dürfte aber andereseits das zu-klein-Problem
nicht auftreten.
--
Uwe
Holger Schulz
2004-04-05 14:50:31 UTC
Post by Herbert Voss
es ist besser hier \makebox[2cm]{#1} zu nehmen, sonst
gibt es bei zu engen Boxen Probleme.
Okay, habe mich dann fuer die \makebox entschieden und habe jetzt
folgende Loesung:

\newcommand{\square}[2][nolabel]{%
\ifthenelse{\equal{#1}{nolabel}}%
%then
{\psframebox{\makebox[\squarelength]{%
\rule[\squareliftlength]{0cm}{\squarelength}%
\ensuremath{#2}}}}%
%else
{\rnode{#1}{%
{\psframebox{\makebox[\squarelength]{%
\rule[\squareliftlength]{0cm}{\squarelength}%
\ensuremath{#2}}}}}}%
}

Mit Hilfe der Stuetze sorge ich dafuer, das die Raehmchen quadratisch
werden und mit dem negativen Lift halte ich mir Aerger mit Unterlaengen,
wie sie z.B. durch Indizes entstehen.

Das \ifthen wuerde ich ganz gerne, durch ein PlainTeX-if ersetzen, aber
da komme ich mit der Syntax nicht ganz klar. Dazu werde ich dann nochmal
in 'nem anderen Thread fragen.

Nochmal danke.

hs
Herbert Voss
2004-04-05 14:54:22 UTC
Post by Holger Schulz
Das \ifthen wuerde ich ganz gerne, durch ein PlainTeX-if ersetzen, aber
da komme ich mit der Syntax nicht ganz klar. Dazu werde ich dann nochmal
in 'nem anderen Thread fragen.
gib ein komplettes Beispiel.

Herbert
--
http://TeXnik.de/
http://PSTricks.de/
Holger Schulz
2004-04-05 16:18:56 UTC
Post by Herbert Voss
Post by Holger Schulz
Das \ifthen wuerde ich ganz gerne, durch ein PlainTeX-if ersetzen, aber
da komme ich mit der Syntax nicht ganz klar. Dazu werde ich dann nochmal
in 'nem anderen Thread fragen.
gib ein komplettes Beispiel.
Ich dachte, das haette ich. In

\newcommand{\square}[2][nolabel]{%
\ifthenelse{\equal{#1}{nolabel}}%
[...]

will ich testen, ob ein optionales Argument uebergeben wurde. Dazu gebe
ich einen Text, hier "nolabel" als Defaultwert an, um teste dann auf
Gleichheit mit dem. Dafuer verwende ich \ifthenelse und \equal, dazu
muss ich aber immer das Paket ifthe.sty einbinden.

In einem PlainTex-Buch habe ich gelesen, dass man mit den \if-Befehlen,
aus PlainTex was aenhliches hinkriegen muesste, ich habe aber die
Beispiele nicht verstanden, bzw. dass so nicht hinbekommen. Wenn ichb es
aber hinbekaeme koennte ich es mir sparen, zusaetzlich au dem Paket in
dem ich o.g. Makro definiere auch immer noch ifthen.sty einzubinden
(vergesse ic h erfahrungsgemaesz oefters).

hs

Rolf Niepraschk
2004-04-01 09:06:15 UTC
Mit
\psframebox{Text}
laeest sich ja ein Rahmen um den Text zeichenen.Ich moechte in den
Rahmen immer nur einzelne Zeichen reinschreben (was noch nicht das
Problem ist), haette aber gerne ein Moeglichkeit die Groesze des Rahmens
absolut festzulegen, so das zwei nebeneinander stehende Boxen gleich
grosz sind, auch wenn die darin stehenden Zeichen unterschiedlich grosz
sind. \psframebox passt ja die Rahmengroesze an den Inhalt an etc.
Geht das ueberhaupt oder bin ich ganz auf dem falschen Dampfer?
Analog wuerde ich gerne auch mit \pscirclebox verfahren.
Du kannst auch -- ähnlich zu dem Vorschlag von Herbert -- statt einer
\parbox etwas wie

\eqparbox{HUGO}{foo} \eqparbox{HUGO}{bar} \eqparbox{HUGO}{foobar}

nehmen (--> `eqparbox.sty'). Dann ist es nicht einmal nötig, eine
absolute Breite anzugeben. Stattdessen kümmert sich LaTeX darum, dass
die Breite von "foobar" für alle HUGO-Boxen genommen wird...

...Rolf
--
|| Rolf Niepraschk c/o Physikalisch-Technische Bundesanstalt ||
|| Abbestr. 2-12; D-10587 Berlin, Germany ||
|| Tel/Fax: ++49-30-3481-316/490, email: ***@ptb.de ||
Holger Schulz
2004-04-01 14:13:44 UTC
Post by Rolf Niepraschk
Stattdessen kümmert sich LaTeX darum, dass
die Breite von "foobar" für alle HUGO-Boxen genommen wird...
Das ist ja noch besser. Euch allen drei vielen lieben Dank, jetzt habe
ich jede Menge Anregungen zum Rumprobieren.

hs