PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : So großer Abstand zwischen Text und \parbox



missi
06-09-2010, 22:54
Hallo, Leute.

Ich hab ein kleines Problem. Ich schreibe an einer Dokumentation für ein Programm und möchte zwischen den Textzeilen Codeschnipsel in einem grau schattierten Rahmen darstellen. Hier ist mal ein Beispiel:



\documentclass[a4paper,10pt]{report}
\usepackage[latin1]{inputenc}
\usepackage{fancybox}
\usepackage{color}

\begin{document}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\definecolor{Gray}{gray}{0.8}
\begin{center}
\begin{figure}[htbp]
\colorbox{Gray}{\parbox{\textwidth}{\textcolor{bla ck}{\texttt{%
\# u: vertex, k: edge\\
\mbox{}\ \ \ \ vertex = get\_vertex(1)\\
\mbox{}\ \ \ \ if vertices! != None:\\
\mbox{}\ \ \ \ \mbox{}\ \ \ \ k = random(get\_edges())\\
}}}}
\caption{Blablabla}
\end{figure}
\end{center}
Now, look at the first few lines of \textit{graph.mesh.py} (after the long comment), where you can see this expression:
\begin{center}
\begin{figure}[htbp]
\colorbox{Gray}{\parbox{\textwidth}{\textcolor{bla ck}{\texttt{%
sys.path.insert(0, '/root/alice')
}}}}
\end{figure}
\end{center}
Blablablablablablablablablablablablablablablablabl ablabla.

\end{document}


Allerdings ergeben sich zwei unschöne Dinge.

Erstens: Zwischen dem Text und dem Rahmen ist immer ein enorm großer Abstand. Wenn ich z.B. mal nur eine Zeile erklären will (siehe zweiter Rahmen), dann ist zwischen dem Text und dem Rahmen so ein großer Abstand, dass es nicht schön aussieht.

Zeitens: Ich krieg das mit der Positionierung nicht hin (vllt. fällt das hier nicht auf, weil das Beispiel so klein ist). Ich schreibe in der tex-Datei nen Text, dann füge ich so einen Rahmen ein, dann wieder Text. Aber in der PDF ist der Rahmen manchmal ganz woanders. Ich weiß, der Interpreter versucht, dieses htbp so gut wie möglich zu machen, aber gibt es nicht irgendeinen Latex-Befehl, mit den ich "schattierte Rahmen mit Code drin" so erzeugen kann, dass sie genau dort sind, wo ich sie haben will?

Liebe Grüße, missi.

tral
06-09-2010, 23:09
Hallo,




Erstens: Zwischen dem Text und dem Rahmen ist immer ein enorm großer Abstand. Wenn ich z.B. mal nur eine Zeile erklären will (siehe zweiter Rahmen), dann ist zwischen dem Text und dem Rahmen so ein großer Abstand, dass es nicht schön aussieht.


Der vertikale Abstand kommt durch die vielen Umgebungen, die du einfügst... Schreibe statt \begin{center}...\end{center} am Besten:



{\centering
...
}




Zeitens: Ich krieg das mit der Positionierung nicht hin (vllt. fällt das hier nicht auf, weil das Beispiel so klein ist). Ich schreibe in der tex-Datei nen Text, dann füge ich so einen Rahmen ein, dann wieder Text. Aber in der PDF ist der Rahmen manchmal ganz woanders. Ich weiß, der Interpreter versucht, dieses htbp so gut wie möglich zu machen, aber gibt es nicht irgendeinen Latex-Befehl, mit den ich "schattierte Rahmen mit Code drin" so erzeugen kann, dass sie genau dort sind, wo ich sie haben will?


Lass einfach den Rahmen nicht gleiten, d.h. entferne \begin{figure} und \end{figure}... Die Unterschrift musst du dann mit \captionof aus dem Paket caption machen...

Christian.

missi
07-09-2010, 00:35
danke, ich werde es gleich mal ausprobieren :)

Schweinebacke
07-09-2010, 09:56
Eine figure-Umgebung in eine center-Umgebung oder den Dunstkreis von \centering zu packen bringt nichts. Zu den Basiseigenschaften von figure gehört, dass es eine Gleitumgebung ist. Sie gleitet deshalb auch aus dem Wirkungsbereich von anderen Umgebungen heraus. Will man eine Gleitumgebung horizontal zentrieren, so setzt man \centering innerhalb der Gleitumgebung, also
\begin{figure}
\centering
...
\end{figure}Wenn man die Gleitoption »h« verwendet, sollte man Gleitumgebungen übrigens in der Regel nur zwischen Absätzen im Code platzieren, weil sie sonst den Text zerreißen können. Das ist nicht gut für den Lesefluss. Optimal werden Konsultationstexte am Seitenanfang und notfalls am Seitenende oder auf einer Extraseite platziert. Das ist normalerweise auch die Voreinstellung, wenn man auf das optionale Argument komplett verzichtet.