fixmarks.sty

  • Questo topic ha 4 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 17 anni fa da antmjr.
  • Creatore
    Topic
  • #36593
    Up
    0
    Down
    ::


    Ho notato solo ora che nella guida al pacchetto fancyhdr si dice che la marcatura della prima e dell’ultima voce di un vocabolario dà problemi col layout a due colonne.
    Per risolvere questo bug, viene riportata la seguente correzione (pag. 12 / fig.4 della guida tradotta in italiano)

    `
    % fixmarks.sty:
    % Patch LaTeX's output routine to handle marks correctly with two columns.
    % Joe Pallas % Corrected by Piet van Oostrum on Feb 5, 1993, Oct 5, 1994
    \def\@outputdblcol{\if@firstcolumn \global\@firstcolumnfalse
    % Remember the marks from the first column
    \global\setbox\@leftcolumn\copy\@outputbox
    \splitmaxdepth=\maxdimen \cbaddness=10000
    \setbox\@outputbox\vsplit\@outputbox to\maxdimen
    \xdef\@firstcoltopmark{\topmark}%
    \xdef\@firstcolfirstmark{\splitfirstmark}%
    \ifx\@firstcolfirstmark\empty\global\let\@setmarks\relax\else
    \gdef\@setmarks{\let\firstmark\@firstcolfirstmark
    \let\topmark\@firstcoltopmark}%
    \fi
    % End of change
    \else \global\@firstcolumntrue
    \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
    {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil
    \hbox to\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats
    % Override current first and top with those of first column if necessary
    \@setmarks
    % End of change
    \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
    \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup
    \fi}

    Figura 4: Correzione del comportamento delle marche nello stile a due colonne.
    `

    Dato che sono un principiante, ho bisogno di una spiegazione passo passo per sapere cosa devo fare.Per ora mi sono limitato ad includere il codice precedente nell’intestazione del mio documento, ma senza ottenere alcun risultato (nel senso che continuano a venire isolate la prima e l’ultima voce della colonna più a destra).

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

      Ho notato solo ora che nella guida al pacchetto fancyhdr si dice che la marcatura della prima e dell’ultima voce di un vocabolario da problemi col layout a due colonne.
      Per risolvere questo bug, viene riportata la seguente correzione (pag. 12 / fig.4 della guida tradotta in italiano)

      `
      % fixmarks.sty:
      % Patch LaTeX's output routine to handle marks correctly with two columns.
      % Joe Pallas % Corrected by Piet van Oostrum on Feb 5, 1993, Oct 5, 1994
      \def\@outputdblcol{\if@firstcolumn \global\@firstcolumnfalse
      % Remember the marks from the first column
      \global\setbox\@leftcolumn\copy\@outputbox
      \splitmaxdepth=\maxdimen \cbaddness=10000
      \setbox\@outputbox\vsplit\@outputbox to\maxdimen
      \xdef\@firstcoltopmark{\topmark}%
      \xdef\@firstcolfirstmark{\splitfirstmark}%
      \ifx\@firstcolfirstmark\empty\global\let\@setmarks\relax\else
      \gdef\@setmarks{\let\firstmark\@firstcolfirstmark
      \let\topmark\@firstcoltopmark}%
      \fi
      % End of change
      \else \global\@firstcolumntrue
      \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
      {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil
      \hbox to\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats
      % Override current first and top with those of first column if necessary
      \@setmarks
      % End of change
      \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
      \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup
      \fi}

      Figura 4: Correzione del comportamento delle marche nello stile a due colonne.
      `

      Dato che sono un principiante, ho bisogno di una spiegazione passo passo per sapere cosa devo fare.Per ora mi sono limitato ad includere il codice precedente nell’intestazione del mio documento, ma senza ottenere alcun risultato (nel senso che continuano a venire isolate la prima e l’ultima voce della colonna più a destra).

      Hai inserito anche \makeatletter e \makeatother rispettivamente prima e dopo quel codice?

      Ciao
      Enrico

    • #36595
      Up
      0
      Down
      ::


      Grazie Enrico, no non avevo messo nulla. Adesso l’ho corretto così:

      \makeatletter
      % fixmarks.sty:

      [cut]

      \fi}
      \makeatother

      Mi dà un nuovo errore:

      ! Undefined control sequence.
      \@outputdblcol …tmaxdepth =\maxdimen \cbaddness
      =100000 \setbox \@outputbo…
      l.101 \idx{Aditus}{, us m}
      {Via, accessus, )(exitus.}
      ?

      Ho provato a togliere quella voce, ma allora l’errore si verifica sulla voce successiva. Ho provato a togliere progressivamente tutte le voci: quando ne rimangono solo 22 l’errore diventa

      ! Undefined control sequence.
      \@outputdblcol …tmaxdepth =\maxdimen \cbaddness
      =100000 \setbox \@outputbo…
      l.2070 \end{document}

      ?

      Come mi consigli di procedere?

    • #36596
      Up
      0
      Down
      ::

      Grazie Enrico, no non avevo messo nulla. Adesso l’ho corretto così:

      \makeatletter
      % fixmarks.sty:

      [cut]

      \fi}
      \makeatother

      Mi da un nuovo errore:

      ! Undefined control sequence.
      \@outputdblcol …tmaxdepth =\maxdimen \cbaddness
      =100000 \setbox \@outputbo…
      l.101 \idx{Aditus}{, us m}
      {Via, accessus, )(exitus.}
      ?

      Ho provato a togliere quella voce, ma allora l’errore si verifica sulla voce successiva. Ho provato a togliere progressivamente tutte le voci: quando ne rimangono solo 22 l’errore diventa

      ! Undefined control sequence.
      \@outputdblcol …tmaxdepth =\maxdimen \cbaddness
      =100000 \setbox \@outputbo…
      l.2070 \end{document}

      ?

      Come mi consigli di procedere?

      Cambia \cbaddness in \vbadness. Una versione che dovrebbe essere corretta è
      `\def\@outputdblcol{\if@firstcolumn \global\@firstcolumnfalse
      % save the left column
      \global\setbox\@leftcolumn\copy\@outputbox
      % save the \split*marks
      \setbox\@tempboxa\vbox{
      \toks@\expandafter{\splitfirstmark}
      \mark{\the\toks@}
      \toks@\expandafter{\splitbotmark} % we don't use \splitbotmark but
      \mark{\the\toks@}} % it gets clobbered by the \vsplit below
      % Remember the marks from the first column
      \splitmaxdepth=\maxdimen \vbadness=10000
      \setbox\@outputbox\vsplit\@outputbox to\maxdimen
      \expandafter\gdef\expandafter\@firstcoltopmark\expandafter{\topmark}%
      \expandafter\gdef\expandafter\@firstcolfirstmark
      \expandafter{\splitfirstmark}%
      \ifx\@firstcolfirstmark\empty\global\let\@setmarks\relax\else
      \gdef\@setmarks{\let\firstmark\@firstcolfirstmark
      \let\topmark\@firstcoltopmark}%
      \fi
      % Restore the \split*marks
      \setbox\@tempboxa\vsplit\@tempboxa to 0pt % this resets the \split*marks
      % End of change
      \else \global\@firstcolumntrue
      \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
      {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil
      \hbox to\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats
      % Override current first and top with those of first column if necessary
      \@setmarks
      % End of change
      \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
      \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup
      \fi}`
      Ciao
      Enrico

    • #36597
      Up
      0
      Down
      ::


      Grazie mille, tutto funziona alla meraviglia!
      Adesso bisognerà correggere quel refuso (se è un refuso) sulla – peraltro preziosissima – guida di fancyhdr…

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

Go to top