PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : minipage verschieben



masc
05-12-2004, 21:12
Hallo,

ich habe eine Minipage definiert mit "Überbreite" definiert.

\begin{minipage}{\textwidth+\marginparsep+\marginp arwidth}
... Bei geraden Seiten beginnt diese jedoch auf Höhe des normalen Textes. Ist es möglich die minipage zu verschieben, damit sie bündig mit der Marginalienspalte beginnt?

blubb
06-12-2004, 08:50
Mal ins blaue gedacht:
Das Problem kann ja eigentlich nur mit der Option twoside auftreten, oder?
Und bei twoside sind die Marginalien auch mal rechts, mal links, und soll deine Minipage dann rechts oder links anschlagen.

Oder als Handlungstipp: Willst du wirklich twoside oder reicht dir oneside (und ist damit dein Problem gelöst?)

Ansonsten wäre ein Minimalbeispiel zum verständnis ganz gut (zwei Seiten, je mit minipage und Info wo es passt wo nicht, und wo es sein sollte)
Blubb

masc
06-12-2004, 22:42
Ja richtig, twoside. Oneside reicht mir leider nicht.



\newcommand{\bsp}[1]{
\vspace{5mm}
\begin{minipage}
{\textwidth+\marginparsep+\marginparwidth}
\lstinputlisting
[basicstyle=\ttfamily\footnotesize]{#1}
\end{minipage}
\vspace{5mm}
}

Das Problem tritt nur bei ungeraden Seiten auf.

Hier mal eine kleine Skizze. Ich hoffe das ist verständlich genug
.
M=Marginalienspalte
T =Text
B = Box / Minipage



So sieht es aus (linke Seite)

MMMMM TTTTTTTTTT
TTTTTTTTTT
TTTTTTTTTT
TTTTTTTTTT

BBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBB
// <==== soll jeweils nach links verschoben werden

TTTTTTTTTT
TTTTTTTTTT
TTTTTTTTTT


So soll es aussehen:

MMMMM TTTTTTTTTT
TTTTTTTTTT
TTTTTTTTTT
TTTTTTTTTT

BBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBB

TTTTTTTTTT
TTTTTTTTTT
TTTTTTTTTT

blubb
07-12-2004, 10:25
Ahhhh,
ok, das war mir jetzt zwar kein Minimalbeispiel, aber ich hab glaub das Problem:

Mein Minimalbeispiel:

\documentclass[twoside,parskip]{scrartcl}
\newlength{\mysize}
\newcommand{\bsp}{
Vorher\\
\setlength{\mysize}{\textwidth}
\addtolength{\mysize}{\marginparsep}
\addtolength{\mysize}{\marginparwidth}
\begin{minipage}{\mysize}
-\hrulefill-
\end{minipage}\\
Nachher
}
\begin{document}
\bsp
\clearpage
\bsp
\end{document}


Wenn ich dein \bsp kommen bei mir ++ im Text (Überbleibsel von {\textwidth+\marginparsep+\marginparwidth} )
Ich definiere mir mal eine eigene Länge.

Wenn du jetzt mein Minimalbeispiel übersetzt, siehst du, das die Breite wirklich angepasst wird (\hrulefill füllt die minibox aus).
Du willst aber zusätzlich eine Linksverschiebung auf ungeraden Seiten.

Als Lösungsansatz:

\newlength{\fullwidth}
\newcommand{\bsp}{
-\hrulefill-
Vorher\par
\setlength{\fullwidth}{\textwidth}
\addtolength{\fullwidth}{\marginparsep}
\addtolength{\fullwidth}{\marginparwidth}
\begin{list}{}{\textwidth=\fullwidth
\leftmargin=-\marginparwidth%Nur ungerade Seiten
}
\item
-\hrulefill-%Hier Inhalt
\end{list}\par
Nachher
}
Die Einstellung zu leftmargin sollte nur bei ungeraden Seiten sein. Das bekomme ich auf die schnelle nicht hin.

Vielleicht hat da jemand eine Idee. ( In http://www.mrunix.de/forums/showthread.php?t=33943&highlight=ungerade gab es zumindest keine Antwort).

Ich hoffe du kannst den Faden hier aufnehmen oder jemand anders kann weiterhelfen.

masc
07-12-2004, 12:53
Wenn ich dein \bsp kommen bei mir ++ im Text (Überbleibsel von {\textwidth+\marginparsep+\marginparwidth} )


Sorry, hab das Package vergessen.
\usepackage{calc}

masc
07-12-2004, 23:38
Also, ich hab inzwischen herausgefunden, dass man die minipage mit dem Befehl \hspace{} verschieben kann.

\hspace{-50mm}

Desweiteren kann man mit dem Befehl \ifthispageodd{}{} heraus bekommen, ob es sich um eine gerade oder ungerade Seite handelt. (Funktioniert auch im Makro.)
Bsp.

\ifthispageodd{Ungerade}{Gerade}Seite

Wenn ich beides kombinier funktioniert es beim ersten Auftreten in meinem Dokument (gerade Seine / links). Auf der darauffolgenden Seite (ungerade Seite / rechts) wird die minipage allerdings auch um -50mm verschoben.
Akuteller Code:


\usepackage{calc}
\usepackage{ifthen}

\newcommand{\bsp}[1]{
\par
\vspace{5mm}
\ifthispageodd{\hspace*{-50mm}}{\hspace*{0mm}}
\begin{minipage}{\textwidth+\marginparsep+\marginp arwidth}
\ifthispageodd{Ungerade}{Gerade}Seite %nur zum Test
\lstinputlisting[basicstyle=\ttfamily\footnotesize]{#1}
\end{minipage}
\vspace{5mm}
}


Vielleicht weiß ja noch jemand was.

Gute Nacht

blubb
08-12-2004, 09:16
\ifthispageodd fehlte mir zur Lösung.

\documentclass[twoside,parskip]{scrartcl}
\newlength{\fullwidth}
\newcommand{\bsp}[1]{

\setlength{\fullwidth}{\textwidth}
\addtolength{\fullwidth}{\marginparsep}
% \addtolength{\fullwidth}{\marginparwidth}
\begin{list}{}{\textwidth=\fullwidth
\ifthispageodd{
\leftmargin=-\marginparwidth%Nur ungerade Seiten
}{
% \leftmargin=-\marginparwidth%Nur gerade Seiten
}
}
\item #1
\end{list}\par
}


\begin{document}
ungerade\hrulefill
\bsp{-\hrulefill-}
ungerade\hrulefill
\clearpage
gerade\hrulefill
\bsp{-\hrulefill-}
gerade\hrulefill
\end{document}
Die Breiten passen nicht, aber das grundprinzip stimmt glaub.

Blubb

Nachtrag:
Ich verzichte hier auf eine Minibox, d.h. es ist ein Seitenumbruch innerhalb des Textes möglich. Falls das explizit verhindert werdn soll. musst du noch eine minibox um die "Liste" machen.

masc
08-12-2004, 21:17
Ok, ich habs. Danke dir.

Nur das mit den Listenerklärungen hat bei mir nicht geklappt. Ich habe es halt mit festen Werten eingerichtet, ist zwar nicht so fein, aber was keiner sieht...

Hier mein (endgültige) Lösung:


\newcommand{\bsp}[1]{
\begin{list}{}{\ifthispageodd{\rightmargin=-40mm \leftmargin=5mm}{\leftmargin=-40mm}}
\item \lstinputlisting[basicstyle=\ttfamily\footnotesize]{#1}
\end{list}\par
}

edico
09-12-2004, 11:56
Lösung ohne minipage ... Vielleicht kannst du dies auf deine Belange adaptieren.
\documentclass{scrbook}
\usepackage{blindtext}
%--- macro Texterweiterung -------------------------------------------
\newenvironment{myQuote}[2]% % odd pages
{\begin{list}{}{\leftmargin#1\rightmargin#2}\item{ }}%
{\end{list}}
%---------------------------------------------------------------------
...
\begin{myQuote}{-3cm}{0cm}
\blindtext[1]
\end{myQuote}
...
edico