Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

parallel.sty und farbiger Text

20 views
Skip to first unread message

Alexander Hirsch

unread,
Feb 11, 2007, 3:39:47 PM2/11/07
to
Hallo,

wenn ich versuche mit parallel.sty einige Zeilen farbig nebeneinander zu
setzen, erhalte ich folgendes Resultat

(Farbe1) ABCDEF (Farbe2) ABCDEF (--> soweit ok)
(Farbe2) ABCDEF (Farbe2) ABCDEF (--> Umschaltung?)
(Farbe2) ABCDEF (Schwarz) ABCDEF (--> ? )

Weiß jemand, ob so etwas mit parallel.sty allgemein nicht geht oder
mache ich nur einen Fehler?

Grüße

Alexander

---% Minimalbeispiel
\documentclass[a4paper]{scrartcl}
\usepackage{parallel,color}
\begin{document}
\begin{Parallel}{0.47\textwidth}{0.47\textwidth}
\ParallelLText{\textcolor{red}{Ein Absatz, der sich ueber zwei Zeilen
erstrecken soll. Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.}}
\ParallelRText{\textcolor{blue}{Ein Absatz, der sich ueber zwei Zeilen
erstrecken soll. Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.}}
\end{Parallel}
\end{document}

Ulrike Fischer

unread,
Feb 12, 2007, 8:46:46 AM2/12/07
to
Alexander Hirsch <alexh...@web.de> schrieb:

> Hallo,
>
> wenn ich versuche mit parallel.sty einige Zeilen farbig nebeneinander
> zu setzen, erhalte ich folgendes Resultat
>
> (Farbe1) ABCDEF (Farbe2) ABCDEF (--> soweit ok)
> (Farbe2) ABCDEF (Farbe2) ABCDEF (--> Umschaltung?)
> (Farbe2) ABCDEF (Schwarz) ABCDEF (--> ? )
>
> Weiß jemand, ob so etwas mit parallel.sty allgemein nicht geht oder
> mache ich nur einen Fehler?

Ob es überhaupt nicht geht, weiß ich nicht, (vielleicht geht es mit
einem neuen pdftex,) aber es ist sicher nicht trivial. Wenn es nur ein
paar Zeilen sind, kannst du ja vielleicht einfach zwei parboxen oder
minipages nebeneinandersetzen.

--
Ulrike Fischer
e-mail: zusätzlich meinen Vornamen vor dem @ einfügen.
e-mail: add my first name between the news and the @.

Heiko Oberdiek

unread,
Feb 12, 2007, 11:18:14 AM2/12/07
to
Ulrike Fischer <ne...@nililand.de> wrote:

> Alexander Hirsch <alexh...@web.de> schrieb:


>
> > wenn ich versuche mit parallel.sty einige Zeilen farbig nebeneinander
> > zu setzen, erhalte ich folgendes Resultat
> >
> > (Farbe1) ABCDEF (Farbe2) ABCDEF (--> soweit ok)
> > (Farbe2) ABCDEF (Farbe2) ABCDEF (--> Umschaltung?)
> > (Farbe2) ABCDEF (Schwarz) ABCDEF (--> ? )
> >
> > Weiß jemand, ob so etwas mit parallel.sty allgemein nicht geht oder
> > mache ich nur einen Fehler?
>
> Ob es überhaupt nicht geht, weiß ich nicht, (vielleicht geht es mit
> einem neuen pdftex,) aber es ist sicher nicht trivial.

Mit dem neuen pdfTeX ist es ziemlich einfach, da man mehrere
Colorstacks verwenden kann:

\documentclass[a5paper]{article}
\usepackage{parallel,color}

\textheight=1cm % for testing

\makeatletter
\chardef\ParallelStackLeft=\pdfcolorstackinit direct{0 g 0 G}\relax
\chardef\ParallelStackRight=\pdfcolorstackinit direct{0 g 0 G}\relax

\renewcommand{\ParallelLText}{%
\everypar{}\@restorepar\begingroup
\hbadness=3000
\let\footnote=\ParallelLFootnote
\ParallelWhichBox=0
\global\setbox\ParallelLBox=\vbox\bgroup \hsize=\ParallelLWidth
\let\@pdfcolorstack\ParallelStackLeft
\aftergroup\ParallelAfterText
\begingroup \afterassignment\ParallelCheckOpenBrace \let\x=%
}
\renewcommand{\ParallelRText}{%
\everypar{}\@restorepar\begingroup
\hbadness=3000
\ifnum\ParallelFNMode=\@ne
\let\footnote=\ParallelRFootnote
\else
\let\footnote=\ParallelLFootnote
\fi
\ParallelWhichBox=\@ne
\global\setbox\ParallelRBox=\vbox\bgroup \hsize=\ParallelRWidth
\let\@pdfcolorstack\ParallelStackRight % HO
\aftergroup\ParallelAfterText
\begingroup \afterassignment\ParallelCheckOpenBrace \let\x=%
}

\renewcommand{\ParallelParOnePage}{%
\ifnum\ParallelBoolVar=\@ne
\par\begingroup
\leftmargin=\z@ \rightmargin=\z@
\parskip=\z@skip \parindent=\z@
\vbadness=10000
\vfuzz=3ex
\splittopskip=\z@skip
\loop%
\ifnum\ParallelBoolVar=\@ne%
\noindent
\hbox to\textwidth{%
\hskip\ParallelLeftMargin
\hbox to\ParallelTextWidth{%
\ifvoid\ParallelLBox
\hskip\ParallelLWidth
\else
\pdfcolorstack\ParallelStackLeft current\relax % HO
\ParallelWhichBox=\z@
\vbox{%
\setbox\ParallelBoxVar
=\vsplit\ParallelLBox to\dp\strutbox
\unvbox\ParallelBoxVar
}%
\fi
\strut
\ifnum\ParallelBoolMid=\@ne
\hskip\ParallelMainMidSkip
\vrule
\else
\hss
\fi
\hss
\ifvoid\ParallelRBox
\hskip\ParallelRWidth
\else
\pdfcolorstack\ParallelStackRight current\relax % HO
\ParallelWhichBox=\@ne
\vbox{%
\setbox\ParallelBoxVar
=\vsplit\ParallelRBox to\dp\strutbox
\unvbox\ParallelBoxVar
}%
\fi
}%
}%
\ifvoid\ParallelLBox \ifvoid\ParallelRBox
\global\ParallelBoolVar=\z@
\fi\fi%
\fi%
\ifnum\ParallelBoolVar=\@ne%
\penalty\interlinepenalty
\repeat
\par
\endgroup
\pdfcolorstack\@pdfcolorstack current\relax % HO
\fi
}
\renewcommand{\ParallelParTwoPages}{%
\ifnum\ParallelBoolVar=\@ne
\par\begingroup
\global\ParallelWhichBox=\@ne
\newpage
\vbadness=10000
\vfuzz=3ex
\splittopskip=\z@skip
\loop%
\ifnum\ParallelBoolVar=\@ne%
\ifnum\ParallelWhichBox=\@ne
\ifvoid\ParallelLBox \mbox{} \newpage
\else\global\ParallelWhichBox=\z@\fi
\else
\ifvoid\ParallelRBox \mbox{} \newpage
\else\global\ParallelWhichBox=\@ne\fi
\fi
\ifnum\ParallelWhichBox=\z@
\ifodd\thepage \mbox{} \newpage \fi
\hbox to\textwidth{%
\pdfcolorstack\ParallelStackLeft current\relax % HO
\vbox{\vsplit\ParallelLBox to.98\textheight}%
}%
\else
\ifodd\thepage\relax\else \mbox{} \newpage \fi
\hbox to\textwidth{%
\pdfcolorstack\ParallelStackRight current\relax % HO
\vbox{\vsplit\ParallelRBox to.98\textheight}%
}%
\fi
\vspace*{\fill}\newpage
\fi
\ifvoid\ParallelLBox\ifvoid\ParallelRBox
\global\ParallelBoolVar=\z@
\fi\fi
\ifnum\ParallelBoolVar=\@ne
\repeat
\par
\endgroup
\pdfcolorstack\@pdfcolorstack current\relax % HO
\fi
}
\makeatother

\begin{document}
\color{green}
Green


\begin{Parallel}{0.47\textwidth}{0.47\textwidth}
\ParallelLText{\textcolor{red}{Ein Absatz, der sich ueber zwei Zeilen
erstrecken soll. Ein Absatz, der sich ueber zwei Zeilen erstrecken
soll.}}
\ParallelRText{\textcolor{blue}{Ein Absatz, der sich ueber zwei Zeilen
erstrecken soll. Ein Absatz, der sich ueber zwei Zeilen erstrecken
soll.}}
\end{Parallel}

Green
\begin{Parallel}[p]{\textwidth}{\textwidth}


\ParallelLText{\textcolor{red}{Ein Absatz, der sich ueber zwei Zeilen
erstrecken soll. Ein Absatz, der sich ueber zwei Zeilen erstrecken
soll.

Foo bar bla bla bla.}}


\ParallelRText{\textcolor{blue}{Ein Absatz, der sich ueber zwei Zeilen
erstrecken soll. Ein Absatz, der sich ueber zwei Zeilen erstrecken
soll.

Foo bar bla bla bla.}}
\end{Parallel}
Green
\end{document}

Viele Grüße
Heiko <ober...@uni-freiburg.de>

Alexander Hirsch

unread,
Feb 12, 2007, 2:18:48 PM2/12/07
to
Danke an Heiko für den Code, es schaut wohl so aus als ob ich da noch
Jahre hätte probieren können ...

Viele Grüße

Alexander

Georg Verweyen

unread,
Feb 12, 2007, 2:24:09 PM2/12/07
to
Heiko Oberdiek schrieb:

> Mit dem neuen pdfTeX ist es ziemlich einfach, da man mehrere
> Colorstacks verwenden kann:
> [Dutzende Zeilen Code entfernt]

Heiko, ich liebe deine Verwendung des Wortes /einfach/.
... aber vermutlich ist das für dich sogar zutreffend -- oder hab ich
ein Ironiezeichen übersehen?

Gruß vom Hobbymagier mit LaTeXzauberkasten,
Georg

Heiko Oberdiek

unread,
Feb 12, 2007, 3:46:43 PM2/12/07
to
Georg Verweyen <Verw...@gmail.com> wrote:

> Heiko Oberdiek schrieb:
> > Mit dem neuen pdfTeX ist es ziemlich einfach, da man mehrere
> > Colorstacks verwenden kann:
> > [Dutzende Zeilen Code entfernt]
>
> Heiko, ich liebe deine Verwendung des Wortes /einfach/.
> ... aber vermutlich ist das für dich sogar zutreffend -- oder hab ich
> ein Ironiezeichen übersehen?

Die "Dutzende Zeilen Code" gehören zu parallel.sty.
Von mir stammen nur zwei handvoll Zeilen:
* zwei für die Anlegung der Colorstacks,
* zwei, um den Colorstack für links und rechts zu setzen,
* jeweils drei für \ParallelParOnePage bzw. \ParallelParTwoPages.

Wenn der Autor von parallel das einbauen will, hat er allerdings
noch etwas zu tun:
* Abfrage auf pdfTeX im PDF-Modus
* Abfrage auf pdfTeX 1.40
* Abfrage auf pdftex.def >= 2007/01/02 v0.04b

Es könnte reichen, die drei Abfragen auf die
Abfrage nach \@pdfcolorstack zu reduzieren.

Nicht gekümmert habe ich mich um die Fussnoten.

Viele Grüße
Heiko <ober...@uni-freiburg.de>

Heiko Oberdiek

unread,
Sep 19, 2007, 11:46:30 AM9/19/07
to
Heiko Oberdiek <ober...@uni-freiburg.de> wrote:

> > Alexander Hirsch <alexh...@web.de> schrieb:
> >
> > > wenn ich versuche mit parallel.sty einige Zeilen farbig nebeneinander
> > > zu setzen, erhalte ich folgendes Resultat
> > >
> > > (Farbe1) ABCDEF (Farbe2) ABCDEF (--> soweit ok)
> > > (Farbe2) ABCDEF (Farbe2) ABCDEF (--> Umschaltung?)
> > > (Farbe2) ABCDEF (Schwarz) ABCDEF (--> ? )
> > >
> > > Weiß jemand, ob so etwas mit parallel.sty allgemein nicht geht oder
> > > mache ich nur einen Fehler?

> Mit dem neuen pdfTeX ist es ziemlich einfach, da man mehrere
> Colorstacks verwenden kann:
> [...]

Ich habe den Code nun in ein Paket gepackt und unter dem
Namen `pdfcolparallel' auf CTAN gestellt.

Viele Grüße
Heiko <ober...@uni-freiburg.de>

0 new messages