einheitlix
21-09-2009, 17:57
Hallo Leute,
dieser Thread ist aus diesem alten Thread ausgegliedert:
http://www.mrunix.de/forums/showthread.php?t=66037
Zusammengefasst moechte ich fuer meine Bachelor-Arbeit eine Reihe von Programmtransformationen beschreiben. Jedenfalls moechte ich immer abwechselnd eine Figur, dann einen erklaerenden Text, dann die naechste Figur, dann wieder einen erklaerenden Text usw. darstellen.
Mein Problem ist, dass LaTeX die Figuren manchmal woanders "hinfloaetet", ohne dass ich das will. Grob gesagt, hab ich sowas:
text1
\begin{figure}[h]
figur1
\end{figure}
text2
Nach text1 ist figur1 aber zu gross, so dass sie nicht mehr ans Ende vom Blatt passt. LaTex platziert figur1 nun also aufs naechste Blatt. Soweit ok. Dann denkt sich LaTex aber "Hey, text2 passt aber noch ans Ende vom vorherigen Blatt!", und platziert diesen dorthin, so dass ich im Endeffekt text1 und text2 hintereinander hab, und auf dem naechsten Blatt dann erst figur1!
Ich moechte aber *erzwingen*, dass text1 auf jeden Fall vor der Figur kommt und text2 nach der Figur. Ich dachte das geht mit dem Parameter [h], der tut aber trotzdem nicht genau was ich will.
Minimalbeispiel:
Ok, ich habe folgende Figur:
\begin{figure}[h]
\centering
\makebox[0pt][c]{%
\begin{psmatrix}[mnode=r,colsep=0.8,rowsep=0.4]
[name=game1] \mybox{
\small
\begin{tabular}{llcl}
let & ($e$, $d$) & $\sel$ & :encGen ElGamal: $1^n$\\
& ($m_1$, $m_2$, $a$) & $\sel$ & :A: ($1^n$, $e$)\\
& $c$ & $\sel$ & :encEnc ElGamal: ($1^n$, $e$, $m_1$)\\
in & \multicolumn{3}{l}{:A': ($1^n$, $m_1$, $m_2$, $a$, $e$, $c$)}\\
\end{tabular}
}
&
[name=game2] \mybox{
\small
\begin{tabular}{llcl}
let & $x$ & $\sel$ & fun(uniform, $\card{\gen{g_n}}$)\\
& ($e$, $d$) & $\sel$ & ($g_n^x$, $x$)\\
& ($m_1$, $m_2$, $a$) & $\sel$ & :A: ($1^n$, $e$)\\
& $y$ & $\sel$ & fun(uniform, $\card{\gen{g_n}}$)\\
& $c$ & $\sel$ & ($g_n^y$, $m_1 \times e^y$)\\
in & \multicolumn{3}{l}{:A': ($1^n$, $m_1$, $m_2$, $a$, $e$, $c$)}\\
\end{tabular}
}
%Arrows
\ncline{->}{game1}{game2}
\end{psmatrix}%
}
\caption{first transformation}
\label{first transformation}
\end{figure}
Speichert dies als figure1.tex ab, dann benutzt folgendes Dokument:
\documentclass[11pt]{article}
\usepackage{amsmath, amsthm, amssymb}
\usepackage{pstricks,pst-node}
\newcommand{\sel}{\leftarrow}
\newcommand{\gen}[1]{\langle#1\rangle}
\newcommand{\card}[1]{\lvert#1\rvert}
\newcommand{\mybox}[1]{\psshadowbox[linecolor=gray,shadowcolor=lightgray]{#1}}
\begin{document}
bla1\\
\input{figure1.tex}\\
bla2\\
\input{figure1.tex}\\
bla3\\
\input{figure1.tex}\\
bla4\\
\input{figure1.tex}\\
bla5\\
\end{document}
Wenn ihr das kompiliert, seht ihr das Problem: am Anfang alles richtig, aber dann kommen "bla4" und "bla5" direkt hintereinander, die letzte Figur erst danach :(
Es ist ja in Ordnung, wenn die letzte Figur nicht mehr auf das Blatt passt und LaTex sie auf das naechste tut, dann soll halt nur "bla5" auch aufs naechste Blatt, hinter die Figur platziert werden.
Danke schonmal!
Malte
dieser Thread ist aus diesem alten Thread ausgegliedert:
http://www.mrunix.de/forums/showthread.php?t=66037
Zusammengefasst moechte ich fuer meine Bachelor-Arbeit eine Reihe von Programmtransformationen beschreiben. Jedenfalls moechte ich immer abwechselnd eine Figur, dann einen erklaerenden Text, dann die naechste Figur, dann wieder einen erklaerenden Text usw. darstellen.
Mein Problem ist, dass LaTeX die Figuren manchmal woanders "hinfloaetet", ohne dass ich das will. Grob gesagt, hab ich sowas:
text1
\begin{figure}[h]
figur1
\end{figure}
text2
Nach text1 ist figur1 aber zu gross, so dass sie nicht mehr ans Ende vom Blatt passt. LaTex platziert figur1 nun also aufs naechste Blatt. Soweit ok. Dann denkt sich LaTex aber "Hey, text2 passt aber noch ans Ende vom vorherigen Blatt!", und platziert diesen dorthin, so dass ich im Endeffekt text1 und text2 hintereinander hab, und auf dem naechsten Blatt dann erst figur1!
Ich moechte aber *erzwingen*, dass text1 auf jeden Fall vor der Figur kommt und text2 nach der Figur. Ich dachte das geht mit dem Parameter [h], der tut aber trotzdem nicht genau was ich will.
Minimalbeispiel:
Ok, ich habe folgende Figur:
\begin{figure}[h]
\centering
\makebox[0pt][c]{%
\begin{psmatrix}[mnode=r,colsep=0.8,rowsep=0.4]
[name=game1] \mybox{
\small
\begin{tabular}{llcl}
let & ($e$, $d$) & $\sel$ & :encGen ElGamal: $1^n$\\
& ($m_1$, $m_2$, $a$) & $\sel$ & :A: ($1^n$, $e$)\\
& $c$ & $\sel$ & :encEnc ElGamal: ($1^n$, $e$, $m_1$)\\
in & \multicolumn{3}{l}{:A': ($1^n$, $m_1$, $m_2$, $a$, $e$, $c$)}\\
\end{tabular}
}
&
[name=game2] \mybox{
\small
\begin{tabular}{llcl}
let & $x$ & $\sel$ & fun(uniform, $\card{\gen{g_n}}$)\\
& ($e$, $d$) & $\sel$ & ($g_n^x$, $x$)\\
& ($m_1$, $m_2$, $a$) & $\sel$ & :A: ($1^n$, $e$)\\
& $y$ & $\sel$ & fun(uniform, $\card{\gen{g_n}}$)\\
& $c$ & $\sel$ & ($g_n^y$, $m_1 \times e^y$)\\
in & \multicolumn{3}{l}{:A': ($1^n$, $m_1$, $m_2$, $a$, $e$, $c$)}\\
\end{tabular}
}
%Arrows
\ncline{->}{game1}{game2}
\end{psmatrix}%
}
\caption{first transformation}
\label{first transformation}
\end{figure}
Speichert dies als figure1.tex ab, dann benutzt folgendes Dokument:
\documentclass[11pt]{article}
\usepackage{amsmath, amsthm, amssymb}
\usepackage{pstricks,pst-node}
\newcommand{\sel}{\leftarrow}
\newcommand{\gen}[1]{\langle#1\rangle}
\newcommand{\card}[1]{\lvert#1\rvert}
\newcommand{\mybox}[1]{\psshadowbox[linecolor=gray,shadowcolor=lightgray]{#1}}
\begin{document}
bla1\\
\input{figure1.tex}\\
bla2\\
\input{figure1.tex}\\
bla3\\
\input{figure1.tex}\\
bla4\\
\input{figure1.tex}\\
bla5\\
\end{document}
Wenn ihr das kompiliert, seht ihr das Problem: am Anfang alles richtig, aber dann kommen "bla4" und "bla5" direkt hintereinander, die letzte Figur erst danach :(
Es ist ja in Ordnung, wenn die letzte Figur nicht mehr auf das Blatt passt und LaTex sie auf das naechste tut, dann soll halt nur "bla5" auch aufs naechste Blatt, hinter die Figur platziert werden.
Danke schonmal!
Malte