PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Balken links und rechts neben dem Text



mr. pelle
24-08-2005, 20:32
Moin moin,

ich bin auf der Suche nach einer (einfachen) Möglichkeit, einen bestimmten Auschnitt von einem Text mit einem Balken links und rechts zu begrenzen.


Text Text Text Text Text Text Text
Text Text Text Text Text Text Text
| Text Text Text Text Text Text |
| Text Text Text Text Text Text |
| Text Text Text Text Text Text |
| Text Text Text Text Text Text |
Text Text Text Text Text Text Text
Text Text Text Text Text Text Text

Ich habe mein Glück bisher mit framed.sty und changebar.sty versucht, allerdings kann man dort nur auf einer Seite des Textes Balken setzen.

Ich freue mich, wenn Ihr Ideen habt, die mich weiterbringen.

MfG
Mr. Pelle

sebbi
24-08-2005, 20:59
Hallo!
Eine sehr einfache Idee die mir gerade gekommen ist, wäre in einer Tabelle etwa so:

\documentclass{article}
\usepackage[latin1]{inputenc}
\begin{document}
\begin{tabular}{|p{\textwidth}|}
Dies ist Text der viel zu lange ist.
Dies ist Text der viel zu lange ist.
Dies ist Text der viel zu lange ist.
Dies ist Text der viel zu lange ist.
\end{tabular}
\end{document}
Ist aber vielleicht unpassend für Dich?

MfG
sebbi

mr. pelle
24-08-2005, 21:19
Moin Sebbi,

danke für Deine schnelle Antwort. Die Idee ist auf jeden Fall nicht schlecht. Allerdings ist der "gerahmte" Abschnitt so lang, dass zwischendrin auch Seitenumbrüche vorkommen. Das lässt sich mit Tabellen nur schwer realisieren. Ich hatte eben noch mal mit supertabular und longtable rumgespielt. Die brechen aber wie erwartet nur nach dem Ende einer Zeile um, was mir nichts bringt, da der gesamte Text ja in einer Zelle stehen würde.

Würde mich freuen, wenn Du oder sonst einer noch eine Idee hat

Mr. Pelle

edico
24-08-2005, 22:29
... margin ist das Stichwort:
%--- macro turnon marginrules ----------------------------------------
\makeatletter
%% This turns on vertical rules at the right and left margins, to
%% better illustrate the spacing for certain structures.
\def\@makecol{\ifvoid\footins \setbox\@outputbox\box\@cclv
\else\setbox\@outputbox
\vbox{\boxmaxdepth \maxdepth
\unvbox\@cclv\vskip\skip\footins\footnoterule\unvb ox\footins}\fi
\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist {}\@combinefloats
\setbox\@outputbox\hbox{\vrule width\marginrulewidth
\vbox to\@colht{\boxmaxdepth\maxdepth
\@texttop\dimen128=\dp\@outputbox\unvbox\@outputbo x
\vskip-\dimen128\@textbottom}%
\vrule width\marginrulewidth}%
\global\maxdepth\@maxdepth}
\newdimen\marginrulewidth
\setlength{\marginrulewidth}{.1pt}
\makeatother
%---------------------------------------------------------------------
... geht nur bei portrait, nicht bei landscape.
edico

mr. pelle
25-08-2005, 09:18
Moin edico,

das Ziel vor Augen, kann ich leider nicht über die Linie laufen...

Dein Code in eine Beispieldatei kopiert erzeugt bei mir massig Fehler (alle überflüssigen Leerzeichen sind gelöscht). Wie wende ich das Makro denn richtig an?

Ich würde gerne verstehen, was das Makro genau tut. Gibt es im Netz eine gute Seite auf, der alle/die meißten TeX-Befehle verzeichnet sind?

Danke

Mr. Pelle

edico
25-08-2005, 09:39
Hej,
was machst du denn bloss? ;-)
...
\documentclass[12pt,a5paper]{scrartcl}
\usepackage[german,english]{babel}
%--- macro turnon marginrules ----------------------------------------
\makeatletter
%% This turns on vertical rules at the right and left margins, to
%% better illustrate the spacing for certain structures.
\def\@makecol{\ifvoid\footins \setbox\@outputbox\box\@cclv
\else\setbox\@outputbox
\vbox{\boxmaxdepth \maxdepth
\unvbox\@cclv\vskip\skip\footins\footnoterule\unvb ox\footins}\fi
\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist {}\@combinefloats
\setbox\@outputbox\hbox{\vrule width\marginrulewidth
\vbox to\@colht{\boxmaxdepth\maxdepth
\@texttop\dimen128=\dp\@outputbox\unvbox\@outputbo x
\vskip-\dimen128\@textbottom}%
\vrule width\marginrulewidth}%
\global\maxdepth\@maxdepth}
\newdimen\marginrulewidth
\setlength{\marginrulewidth}{.1pt}
\makeatother
%---------------------------------------------------------------------
\usepackage{blindtext}
\begin{document}
\section*{Turn on vertical rules at margins}
\Large Note: Starting on this page, vertical rules are
added at the margins so that the positioning of various display elements
with respect to the margins can be seen more clearly.
\end{document}
...
Erklaerungen im Detail sind obsolet, abgesehen davon bin ich kein Entwickler und hab von TeX keine Ahnung. Ich hatte das macro mal vor vielen Zeiten gefunden und nutze es zur typographischen Gestaltung - problemlos. Grundlegend ist es hier wohl so, dass die Konstruktion via boxes und margin environment erfolgt. Besser ist, du packst das macro in einen file und bindest ihn mit input ein (oder machst einen sty-file), wenn du das macro häufiger mal brauchst (a la blindtext).
Greut de Woderkant
edico

mr. pelle
25-08-2005, 10:11
Mühsam ernährt sich das Eichhörnchen...

Viel anders hatte ich das auch nicht gemacht. Jedenfalls, Dein Beispiel funktioniert bei mir.

(Hoffentlich) letzte Frage (zu diesem Thema): Jetzt gehen die Balken ja über die gesamte Seite. Wie kann ich die Balken nur für einen Abschnitt defnieren?

Text...
\begin{balken}
Text...
\end{balken}
Text...

Danke
Mr. Pelle

edico
25-08-2005, 10:38
... tja, mein Freund, das ist die Frage ;-)
Hier marginrules fuer die aktuelle Seite und alle folgenden, da ja der gesamte Satzspiegel aus typographischer Sicht 'wichtig' ist.
edico
P.S. Warum nicht framebox?

mr. pelle
25-08-2005, 10:59
Ich hole mal etwas weiter aus: Ich habe mir eine Beispielumgebung definiert, die ich mit meinen beiden Threads perfektionieren möchte. Die Umgebung soll sich vom vorherigen Text abheben. Dies geschieht bis jetzt durch die Wahl einer kleinieren Schriftart und dem Einrücken links und rechts. Zusätzlich sollen eben noch die vertikalen Striche hinzu:



Text Text Text Text Text Text Text Text Text Text
Text Text Text Text Text Text Text Text Text Text

| Beispiel 1.2: Ein Beispiel für ein Beispiel|
|Text Text Text Text Text Text Text Text |
|Text Text Text Text Text Text Text Text |
|Text Text Text Text Text Text Text Text |
|Text Text Text Text Text Text Text Text |
|Text Text Text Text Text Text Text Text |

Text Text Text Text Text Text Text Text Text Text
Text Text Text Text Text Text Text Text Text Text


Das Design ist soweit vorgegeben, ich muss es halt nur irgendwie umsetzten. Daher scheidet framebox an dieser Stelle aus.

Verstehe ich es richtig, dass sich dein Makro nicht ohne große TeX-Kentnisse an meine Wünsche anpassen kann?

Danke
Mr. Pelle

edico
25-08-2005, 12:01
Vesuch es, den code anzupassen.
Vielleicht packst du aber deine schmaleren Absaetze in eine Tabelle - ich schenk dir mein macro 'mylongtab':
...
\documentclass[12pt,a5paper]{scrartcl}
\usepackage[german,english]{babel}
%--- macro turnon marginrules ----------------------------------------
\makeatletter
%% This turns on vertical rules at the right and left margins, to
%% better illustrate the spacing for certain structures.
\def\@makecol{\ifvoid\footins \setbox\@outputbox\box\@cclv
\else\setbox\@outputbox
\vbox{\boxmaxdepth \maxdepth
\unvbox\@cclv\vskip\skip\footins\footnoterule\unvb ox\footins}\fi
\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist {}\@combinefloats
\setbox\@outputbox\hbox{\vrule width\marginrulewidth
\vbox to\@colht{\boxmaxdepth\maxdepth
\@texttop\dimen128=\dp\@outputbox\unvbox\@outputbo x
\vskip-\dimen128\@textbottom}%
\vrule width\marginrulewidth}%
\global\maxdepth\@maxdepth}
\newdimen\marginrulewidth
\setlength{\marginrulewidth}{.1pt}
\makeatother
%---------------------------------------------------------------------
%--- macro mylongtable -----------------------------------------------
\usepackage{color}
\definecolor{Gray98}{gray}{0.98}
\usepackage{colortbl}
\usepackage{longtable}
\newcommand{\mylongtab}[1]{%
%\color{white}
%\arrayrulecolor{white}
\arrayrulecolor{red}
\setlength{\arrayrulewidth}{5pt}
%\begin{longtable}{|>{\columncolor{Gray98}}p{0.9\textwidth}|}
\begin{longtable}{|p{0.7\textwidth}|}
#1\\
\end{longtable}}
%---------------------------------------------------------------------

\usepackage{blindtext}
\begin{document}
\section*{Turn on vertical rules at margins}
\Large{Note: Starting on this page, vertical rules are
added at the margins so that the positioning of various display elements
with respect to the margins can be seen more clearly.}

\mylongtab{%
\blindtext[1] \\
\dots und es folgen vielleicht noch andere gescheite Worte \dots
}
\end{document
...
Du musst wahrscheinlich auf tabular/tabularx umswitschen, weil du bei longtable Seitenumbruch hast. Aber das duerfte zu wuppen sein und ist einfacher (?) als das macro 'marginrules' anzupassen.
edico

mr. pelle
25-08-2005, 12:13
Deine Idee ist der von Sebbi ja recht ähnlich. Allerdings ist der Seitenumbruch das Problem, da er ja durchaus erwünscht ist. Denn: Meine Beispiel-Umgebungen sind oft länger als eine Seite und müssen demzufolge auch umgebrochen werden. Bei longtable müsste ich dann ja jeden Seitenumbruch per Hand anpassen, was bei der großen Anzahl der Umgebungen leider sehr sehr umständlich wäre.

Oder übersehe ich da irgendetwas?

MfG
Mr. Pelle

edico
25-08-2005, 13:41
Nun, das geht schon.
Der Seitenumbruch ist an sich nicht das Problem, weil 'longtable' das automatisch realisiert (ich hatte nur gedacht, longtable faengt immer auf einer neuen Seite an! Ist aber nicht der Fall).
Das klappt allerdings nicht, wenn du jetzt Absaetze ueber mehrere Seiten hast. Dann muss man den Text manuell umbrechen (ueberhaupt: das heisst nicht umgebrochen, sondern umbrochen!). Mit tabular geht es eben nicht, weil die Tabelle nicht ueber mehrere Seiten laeuft. Vielleicht ist supertable etc. besser. Check es.
...
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[german,english]{babel}
%--- macro turnon marginrules ----------------------------------------
\makeatletter
%% This turns on vertical rules at the right and left margins, to
%% better illustrate the spacing for certain structures.
\def\@makecol{\ifvoid\footins \setbox\@outputbox\box\@cclv
\else\setbox\@outputbox
\vbox{\boxmaxdepth \maxdepth
\unvbox\@cclv\vskip\skip\footins\footnoterule\unvb ox\footins}\fi
\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist {}\@combinefloats
\setbox\@outputbox\hbox{\vrule width\marginrulewidth
\vbox to\@colht{\boxmaxdepth\maxdepth
\@texttop\dimen128=\dp\@outputbox\unvbox\@outputbo x
\vskip-\dimen128\@textbottom}%
\vrule width\marginrulewidth}%
\global\maxdepth\@maxdepth}
\newdimen\marginrulewidth
\setlength{\marginrulewidth}{.1pt}
\makeatother
%---------------------------------------------------------------------
%--- macro mylongtable -----------------------------------------------
\usepackage{color}
\definecolor{Gray98}{gray}{0.98}
\usepackage{colortbl}
\usepackage{longtable}
\newcommand{\mylongtab}[1]{%
%\color{white}
%\arrayrulecolor{white}
\arrayrulecolor{red}
\setlength{\arrayrulewidth}{5pt}
%\begin{longtable}{|>{\columncolor{Gray98}}p{0.9\textwidth}|}
\begin{longtable}{|p{0.7\textwidth}|}
#1\\
\end{longtable}}
%---------------------------------------------------------------------

\usepackage{blindtext}
\begin{document}
\section*{Turn on vertical rules at margins}
%\Large{Note:
Starting on this page, vertical rules are added at the margins so that the positioning of various display elements with respect to the margins can be seen more clearly.
%}

\mylongtab{%
\blindtext\\ \blindtext\\ \blindtext\\
\blindtext\\ \blindtext\\ \blindtext\\
\blindtext\\ \blindtext\\ \blindtext\\
\dots und es folgen vielleicht noch andere gescheite Worte \dots
}
\end{document}
...
So sieht es doch ganz passabel aus - oder versteh was nicht?
edico

mr. pelle
25-08-2005, 13:56
Moin edico,

mit supertabular und longtable hatte ich es nach Sebbis Post schon probiert. Es ist mir allerdings zu aufwendig, die Seitenumbrüche selbst einzustellen. Es sind halt viele Umgebungen mit ordentlich Text.

Wenn du schon nicht weiter weißt, wer soll mir dann noch helfen, und das wo die Zeit drängt...
Ich habe das Topic eben deshalb noch mal bei google.groups gepostet, was aber nicht heißen soll, dass weitere Hilfe von Dir nicht willkommen ist.

MfG
Mr. Pelle

PS: Wenn ich etwas abbreche, habe ich es doch abgebrochen, und nicht etwa umbrochen.

edico
25-08-2005, 17:41
Nun, du wirst es wissen.
Hier eine Loesung mit minipages. Den Ansatz find ich gar nicht so schlecht, da kannst du ein macro draus stricken. Die Höhe der rules bzw. minipages ist ggf. 'a little bit complicated'. Mach mal was draus.
%
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[german,english]{babel}
\usepackage{color}
\usepackage{blindtext}
\begin{document}

\section{minipage resolution}
\blindtext
%\fbox{% % fboxes aus Konstruktionsgruenden
\begin{minipage}[c]{15mm}
\color{white}{\rule{0.1mm}{80mm}}
\end{minipage}
%}
%\fbox{%
\begin{minipage}[c]{1mm}
\parbox[b]{20mm}{\rule{0.1mm}{80mm}}
\end{minipage}
%}
%\hfill
%\fbox{%
\begin{minipage}[c]{.5\textwidth}
\blindtext
\end{minipage}
%}
%\hfill
%\fbox{%
\begin{minipage}[c]{15mm}
\rule{0.1mm}{80mm}
\end{minipage}
%}
\end{document}
%
edico

pospiech
25-08-2005, 18:19
Moin moin,
Ich habe mein Glück bisher mit framed.sty und changebar.sty versucht, allerdings kann man dort nur auf einer Seite des Textes Balken setzen.


Schon mal in framed.sty geguckt ? Da steht drin wie man framed für neue Probleme anpassen kann.

Matthias

mr. pelle
25-08-2005, 19:21
Moin moin,

@pospiech Der Hinweis mit framed, kam auch gerade bei google.groups. Daher habe ich auch folgenden Lösungsvorschlag:



\documentclass{article}
\usepackage{blindtext}
\usepackage{framed}


\newenvironment{leftrightbar}{% minimale Abwandlung von leftbar
\def\FrameCommand##1{\vrule width 3pt \hspace{10pt}##1\hspace{10pt}\vrule
width 3pt}%
\MakeFramed {\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}


\begin{document}
\blindtext
\begin{leftrightbar}
\Blindtext\Blindtext
\end{leftrightbar}
\blindtext
\end{document}

Das funktioniert so, wie ich es mir gewünscht habe. Allerdings kann man keine Fußnoten setzen. Aber in den sauren Apfel werden ich dann wohl beißen müssen.

@edico
Dein Vorschlag mit den minipages ist auf jeden Fall ein guter Ansatz. Ich werde jetzt aber erstmal die leftrightbar-Umgebung aus obigem Beispiel nutzen. Nochmal vielen Dank, dass Du mir heute mit so viel Rat und Tat zur Seiten gestanden hast.

MfG
Mr. Pelle