dvojjazycna sazba ve sloupcich --- inserty

smilauer at volny.cz smilauer at volny.cz
Thu Jul 27 21:04:16 CEST 2000


Potreboval bych vysazet text, ktery by bezel paralelne ve vedlejsim
sloupci. Je to skoro vse opsane z ``TeXbook naruby'' od p. Olsaka, kde
se mezi inserty vklada vertikalni mezera, aby se objevily ve spravne
vysce na strance.

Muj text vypada tak, ze na pocatku nekterych odstavcu je prikaz \lat{},
kde je text pro insert. Pokud by vsak melo dojit k prekryti insertu,
potreboval jsem ale vlozit mezeru take do vlastniho odstavce. Problem je
ten, ze insert je v jeho prvnim radku, takze \vadjust se aktivuje az po
prvnim. Proto musim posledni radek ze seznamu odebrat a vlozit mezeru
pred nej. Funguje to dokud nedojde k tomu, ze odstavec zacina novou
stranku, ale insert na ni presahuje. Mezera pred odstavcem zmizi. Pokud
nekdo vite, jak na to lepe, budu vdecny za radu. (Kdyz jsem upravil
\lat{} tak, ze se vkladal do vertikalniho seznamu mezi odstavce, na
zlomu strany opet doslo k problemum.)

Diky. V. Smilauer


\newinsert\latin
\dimen\latin=\vsize
\count\latin=0
\skip\latin=0pt

% rozmery sloupcu, cele strany, mezera mezi sloupci
\newdimen\latinsize
\newdimen\bihsize
\bihsize=\hsize
\newdimen\bisep
\bisep=10pt

\global\hsize=0.5\hsize
\global\advance\hsize by-0.5\bisep
\latinsize=\hsize

\def\pageoutput{\shipout\vbox{%
  \vbox to\vsize{\hbox{\pageboth}\vss}
     \bigskip\hbox to\bihsize{\hfil\the\pageno\hfil}}
   \advancepageno}

\def\pageboth{\vtop{\hrule height0pt\unvbox255}\kern\bisep
             \vtop{\hrule height0pt\unvbox\latin}}

\output={\ifnum\outputpenalty=-10013 \addspacetolatin
        \else                      \pageoutput \fi}

\def\lat#1{\ifvmode\indent\fi
  \vadjust{\penalty-10013}
  \insert\latin{\hsize=\latinsize
    \vrule height\topskip width0pt{\language=\french#1}}}

\def\addspacetolatin{%
  \ifvoid\latin\dimen0=0pt
  \else \dimen0=-\ht\latin \advance\dimen0 by-\dp\latin
  \fi
  \advance\dimen0 by\pagetotal \advance\dimen0 by-\topskip
  \ifdim\dimen0<0pt
    %zde se pridava mezera pred odstavec
    \unvbox255
    \setbox1=\lastbox
    \vskip-\dimen0
    \noindent\unskip\unpenalty\unhbox1
    \message{@}
  \else\insert\latin{\vskip\dimen0}
    \unvbox255
  \fi
}





More information about the csTeX mailing list