\framedtext su pi\`u pagine

  • Creatore
    Topic
  • #51238
    Up
    0
    Down
    ::


    Salve a tutti.

    Come da titolo non riesco a fare un framed text che stia su pi\`u pagine usando il comando

    \startframedtext

    \stopframedtext

    Qualcuno sa come fare?

Visualizzazione 0 filoni di risposte
  • Autore
    Risposte
    • #51239
      Up
      0
      Down
      ::


      Ecco una prima soluzione (ovviamente opera di Luigi) per un testo che si spezza al più su due pagine

      `\newdimen\SpaceLeft
      \def\CheckSpace{%
      \ifdim\pagetotal=0pt\SpaceLeft=\vsize\else\SpaceLeft=\pagegoal\advance\SpaceLeft
      by -\pagetotal\advance\SpaceLeft by -2\lineheight\fi}%

      \setupcolors[state=start]

      \long\def\StartBg#1\StopBg{%
      \bgroup
      \setbox8000=\vbox{\hsize=\dimexpr\textwidth-1em\relax#1}
      \CheckSpace% \the\SpaceLeft\the\ht8000 \the\dp8000
      \ifdim\dimexpr(\ht8000+\dp8000)>\SpaceLeft\relax
      %
      \setbox8001=\vsplit8000 to \SpaceLeft%
      \setbox8001=\vbox{\unvbox8001}%
      %
      \setupbackground
      [bottomframe=off,
      rulethickness=1pt,
      rightframe=on,width=\textwidth,
      leftframe=on]
      \startbackground\unvbox8001\stopbackground%

      \setupbackground
      [bottomframe=on,
      rulethickness=1pt,
      rightframe=on,width=\textwidth,
      leftframe=on]
      \startbackground\unvbox8000\stopbackground%
      \else
      \setupbackground
      [bottomframe=on,
      rulethickness=1pt,
      rightframe=on,
      leftframe=on]
      \startbackground #1\stopbackground%
      \fi
      \egroup
      }

      \setupbackground
      [bottomframe=on,
      rulethickness=1pt,
      rightframe=on,
      leftframe=on]

      \starttext

      \startbackground
      \input knuth
      \stopbackground

      e poi

      \StartBg
      \input knuth
      \input knuth
      \input knuth
      \StopBg

      \stoptext`

      Una soluzione alternativa potrebbe essere usare il comando \definetextbackground e settare la variabile mp in modo adeguato.

      `\setupcolors[state=start]
      \enableregime[utf]
      \def\Linea{\startMPcode
      draw (0,0) — (\the\textwidth-1,0) withpen pencircle scaled 1bp withcolor red;
      \stopMPcode
      }
      \definetextbackground
      [Prova]
      [
      mp=background:mp,
      location=paragraph,
      rulethickness=1pt,
      width=broad,
      leftoffset=1em,
      rightoffset=1em,
      after={\Linea}
      ]
      \startuseMPgraphic{background:mp}
      path p;
      for i = 1 upto nofmultipars :
      p = (multipars
      topenlarged 5pt
      bottomenlarged 10pt);
      fill p withcolor lightgray ;
      draw leftboundary p withpen pencircle scaled 1bp withcolor red ;
      draw rightboundary p withpen pencircle scaled 1bp withcolor red ;
      endfor;
      \stopuseMPgraphic

      \starttext

      \startProva
      \input knuth
      \input knuth
      \input knuth
      \input knuth
      \input knuth
      \stopProva

      \stoptext`

      Può succedere però che la “\Linea” venga disegnata a pagina nuova 🙁

Visualizzazione 0 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top