ClassicThesis e numeri romani maiuscoli nel frontmatter

  • Creatore
    Topic
  • #78627
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti. Le classi standard e quelle KOMA scrivono i numeri di pagina del frontmatter in “romani minuscolo”. Io vorrei averli in “romano maiuscoletto”. tempo fa Enrico aveva proposto un codice per ottenerli, ma ora non mi funziona più. Lo scheletro che uso è questo:
      `\documentclass{scrbook}
      \usepackage{biblatex}
      \usepackage{classicthesis}

      %*****************************************************%
      % Per i numeri romani in maiuscoletto nel frontmatter %
      %*****************************************************%
      \makeatletter
      \DeclareRobustCommand{\doscroman}{\textsc}
      \def\scroman#1{\expandafter\@scroman\csname c@a#1\endscname}
      \def\@scroman#1{\expandafter\doscroman\expandafter{\romannumeral#1}}

      \let\ORlmph@outputpage@hook\mph@outputpage@hook
      \def\frontmatter{\cleardoublepage
      \pagenumbering{scroman}
      \renewcommand*\mph@outputpage@hook{%
      \bgroup
      \advance\c@page\m@ne
      \immediate\write\@auxout{%
      \string\mph@setcol{ii:\roman{page}}{\string\mph@nr}%
      }%
      \egroup
      }}
      \def\mainmatter{\cleardoublepage
      \pagenumbering{arabic}%
      \let\mph@outputpage@hook\ORlmph@outputpage@hook}
      \makeatother

      \begin{document}
      \frontmatter
      \pagestyle{scrheadings}
      \input{MaterialeInizialeFinale/Frontespizio}
      \input{MaterialeInizialeFinale/Colophon}
      \input{MaterialeInizialeFinale/Dedica}
      \input{MaterialeInizialeFinale/Indici}
      \input{MaterialeInizialeFinale/Introduzione}
      \cleardoublepage

      \mainmatter

      \end{document}`
      Gli errori che ricevo:
      `./Cattolicesimo.aux:39: LaTeX Error: Missing \begin{document}.

      See the LaTeX manual or LaTeX Companion for explanation.
      Type H for immediate help.

      l.39 …1}{vallauri:luce}{0}{\doscroman {vii}}{7}

      ?
      (/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/ot1pplx.fd)
      (/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/omlzplm.fd)
      (/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/omszplm.fd)
      (/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/omxzplm.fd)
      (/usr/local/texlive/2011/texmf-dist/tex/latex/wasysym/uwasy.fd)
      (/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/ot1zplm.fd)
      ./Cattolicesimo.aux:39: You can't use `macro parameter character #' in math mod
      e.
      ##

      l.39 …1}{vallauri:luce}{0}{\doscroman {vii}}{7}`
      Se serve un EMC lo fornisco, ovviamente!

      Grazie in anticipo,
      L.

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


        Non ricordo perché fosse necessaria tutta quella roba, ma immagino ci fossero pacchetti che qui non compaiono.

        `\documentclass{scrbook}
        \usepackage{classicthesis}

        %*****************************************************%
        % Per i numeri romani in maiuscoletto nel frontmatter %
        %*****************************************************%
        \usepackage{etoolbox}
        \patchcmd{\frontmatter}{roman}{scroman}{}{}
        \makeatletter
        \DeclareRobustCommand{\doscroman}{\textsc}
        \def\scroman#1{\expandafter\@scroman\csname c@a#1\endscname}
        \def\@scroman#1{\expandafter\doscroman\expandafter{\romannumeral#1}}
        \makeatother

        \begin{document}
        \frontmatter
        \pagestyle{scrheadings}
        \chapter{Introduzione}
        Ciao
        \end{document}`
        Ciao
        Enrico

      • #78629
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Io avevo usato una definizione simile a quella che ti suggerì Enrico nelle prime versioni della GuidaGuIT; poi ho tolto tutto, perché produceva dei problemi insormontabili con hyperref, con l’indice generale, indice analitico, ecc, con i riferimenti di pagina, eccetera.

          Ho trovato che è molto più sicuro mettere \textsc oppure \scshape, a seconda dei casi nei posti dove ci voglia il maiuscoletto, quindi negli header/footer, nelle righe di configurazione delle pagine, eccetera. La cosa è semplicissima se si ricorda che le cifre del maiuscoletto e quelle del tondo sono identiche, quindi quando nella definizione di, diciamo, \@oddhead vi compare la scrittura \textsc{\thepage}, non ha nessuna importanza se \thepage contenga numeri romani minuscolo oppure cifre; i numeri romani vengono in maiuscoletto, le cifre restano cifre.
          Nell’indice generale potrebbero esserci dei problemi per l’indicazione delle pagine che corrispondono ai titolo dei capitoli, se per caso si usa una classe standard, come book, perché il maiuscoletto è privo di serie nera con i font di default.

          Così funziona ora la GuidaGuIT e, se non mi sono distratto, non ci sono errori e tutto procede come previsto.

          È vero che, come sai, io ridefinisco comandi interni a mio piacimento, mentre tu non lo fai per principio; ma tu usi tanti pacchetti come facyhdr con i quali puoi ridefinire quello che ti pare in modo pulito ed elegante; io invece ridefinisco quello che voglio in modo rozzo e inelegante, ma con il mio approccio non ho l’invadenza di fancyhdr che spesso, le poche volte che lo uso, non mi fa in modo semplice quello che vorrei che facesse quando si cambiano stili di pagina; invece con il mio approccio con poche definizioni o \patchcmd mi definisco quanti stili di pagina voglio senza interferenze gli uni con gli altri, come succede in parte con fancyhdr.

          Lo stesso vale per le righe \l@part, \l@chapter, \l@section, ecc., che definiscono lo stile delle righe dell’indice generale, e via di questo passo.

          Ovviamente non faccio obbiezioni sul tuo modo elegante di procedere; fai benissimo, e in molte circostanze dovrei fare altrettanto mentre ormai ho preso delle brutte abitudini. Constato solo dei fatti e delle differenze funzionali che possono essere risolte con entrambi gli approcci e, a parer mio, il mio approccio è più diretto e sovente, non sempre, trovo la soluzione più in fretta.

        • #78630
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::


            Niente da fare, il problema c’è sempre. 🙁

            Di seguito riporto un codice compilabile, anche se non minimo (per sicurezza, ritengo opportuno elencare tutti i pacchetti caricati nel mio documento).
            `\documentclass[10pt,a4paper,twoside,openright,titlepage,%
            headinclude,footinclude,BCOR5mm,%
            cleardoublepage=empty,%
            tablecaptionabove]{scrbook}

            \usepackage[applemac]{inputenc}
            \usepackage[T1]{fontenc}
            \usepackage[polutonikogreek,english,italian]{babel}
            \usepackage[italian]{varioref}
            \usepackage[final]{microtype}
            \usepackage[style=philosophy-modern,hyperref,backref,natbib]{biblatex}
            \usepackage[babel]{csquotes}
            \usepackage{indentfirst}
            \usepackage{graphicx}
            \usepackage{chngpage,calc}
            \usepackage{makeidx,multicol}
            \usepackage[font=small]{quoting}
            \usepackage[dvipsnames]{xcolor}
            \usepackage{fixltx2e,relsize}
            \usepackage{wasysym,pifont}
            \usepackage[pdfspacing,beramono,eulerchapternumbers,parts]{classicthesis}
            \usepackage{bookmark}
            \bibliography{Bibliografia}

            %*****************************************************%
            % Per i numeri romani in maiuscoletto nel frontmatter %
            %*****************************************************%
            \usepackage{etoolbox}
            \patchcmd{\frontmatter}{roman}{scroman}{}{}
            \makeatletter
            \DeclareRobustCommand{\doscroman}{\textsc}
            \def\scroman#1{\expandafter\@scroman\csname c@a#1\endscname}
            \def\@scroman#1{\expandafter\doscroman\expandafter{\romannumeral#1}}
            \makeatother

            \begin{document}
            \frontmatter
            \pagestyle{scrheadings}
            \parencite{vallauri:luce}
            \end{document}`
            dove Bibliografia.bib è
            `@book{vallauri:luce,
            author = {Lombardi Vallauri, Luigi},
            title = {Nera luce. Saggio su cattolicesimo e apofatismo},
            publisher = {Le Lettere},
            year = {2001},
            location = {Firenze},
            }`
            L’errore è quello che ho mostrato nel post precedente.

            Dove sbaglio?

            Grazie,
            L.

            P.S. È vero, Claudio, per me un buon LaTeX non usa comandi di basso livello: la cosa ha pro e contro, naturalmente. Per la cronaca, non uso fancyhdr. 😉

          • #78631
            Up
            0
            Down
            ::

            lorenzo.pantieri” post=77722Niente da fare, il problema c’è sempre. 🙁

            Di seguito riporto un codice compilabile, anche se non minimo (per sicurezza, ritengo opportuno elencare tutti i pacchetti caricati nel mio documento).
            `\documentclass[10pt,a4paper,twoside,openright,titlepage,%
            headinclude,footinclude,BCOR5mm,%
            cleardoublepage=empty,%
            tablecaptionabove]{scrbook}

            \usepackage[applemac]{inputenc}
            \usepackage[T1]{fontenc}
            \usepackage[polutonikogreek,english,italian]{babel}
            \usepackage[italian]{varioref}
            \usepackage[final]{microtype}
            \usepackage[style=philosophy-modern,hyperref,backref,natbib]{biblatex}
            \usepackage[babel]{csquotes}
            \usepackage{indentfirst}
            \usepackage{graphicx}
            \usepackage{chngpage,calc}
            \usepackage{makeidx,multicol}
            \usepackage[font=small]{quoting}
            \usepackage[dvipsnames]{xcolor}
            \usepackage{fixltx2e,relsize}
            \usepackage{wasysym,pifont}
            \usepackage[pdfspacing,beramono,eulerchapternumbers,parts]{classicthesis}
            \usepackage{bookmark}
            \bibliography{Bibliografia}

            %*****************************************************%
            % Per i numeri romani in maiuscoletto nel frontmatter %
            %*****************************************************%
            \usepackage{etoolbox}
            \patchcmd{\frontmatter}{roman}{scroman}{}{}
            \makeatletter
            \DeclareRobustCommand{\doscroman}{\textsc}
            \def\scroman#1{\expandafter\@scroman\csname c@a#1\endscname}
            \def\@scroman#1{\expandafter\doscroman\expandafter{\romannumeral#1}}
            \makeatother

            \begin{document}
            \frontmatter
            \pagestyle{scrheadings}
            \parencite{vallauri:luce}
            \end{document}`
            dove Bibliografia.bib è
            `@book{vallauri:luce,
            author = {Lombardi Vallauri, Luigi},
            title = {Nera luce. Saggio su cattolicesimo e apofatismo},
            publisher = {Le Lettere},
            year = {2001},
            location = {Firenze},
            }`
            L’errore è quello che ho mostrato nel post precedente.

            Dove sbaglio?

            Grazie,
            L.

            P.S. È vero, Claudio, per me un buon LaTeX non usa comandi di basso livello: la cosa ha pro e contro, naturalmente. Per la cronaca, non uso fancyhdr. 😉

            Il problema è nella macro [tt]\abx@aux@backref[/tt] che viene usata nel file aux per definire la “back reference”. Il suo quarto argomento dev’essere una stringa di caratteri e invece con quella definizione per il numero di pagina viene scritto [tt]\doscroman{i}[/tt]. Per far girare correttamente la macro il trucco sarebbe (va messo tra i [tt]\makeatletter[/tt] e [tt]\makeatother[/tt] che hai già):
            `\let\orig@abx@aux@backref\abx@aux@backref
            \protected\def\abx@aux@backref#1#2#3#4#5{%
            \begingroup\let\doscroman\@firstofone\edef\x{\endgroup
            \unexpanded{\orig@abx@aux@backref{#1}{#2}{#3}}{#4}\unexpanded{{#5}}}\x}`
            ma ovviamente nella “back reference” otterrai “i” e non il numero romano in maiuscoletto. Con l’impostazione dei numeri minuscoli non è un gravissimo problema: devi solo capire dove agire per aggiungere [tt]\textsc[/tt] al momento di stampare il numero di pagina della “back reference”. Se non si usassero numeri minuscoli il problema ci sarebbe eccome.

            Il problema, secondo me, va risolto alla radice: elimina i numeri romani. È una tradizione che al giorno d’oggi non ha più alcuna ragione di esistere.

            Ciao
            Enrico

          • #78632
            Up
            0
            Down
            ::

            egreg9″ post=77725Il problema, secondo me, va risolto alla radice: elimina i numeri romani. È una tradizione che al giorno d’oggi non ha più alcuna ragione di esistere.

            Condivido.

            Ciao
            Tommaso

          • #78633
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::

              illinguista1972″ post=77726

              Il problema, secondo me, va risolto alla radice: elimina i numeri romani. È una tradizione che al giorno d’oggi non ha più alcuna ragione di esistere.

              Condivido.

              Non sono d’accordo. Prendiamo un librone con un frontmatter di 40 pagine: il primo capitolo inizierebbe a pagina 41… a me fa strano.

              In definitiva: il topic dice che non possono avere i numeri romani maisucoletti nel frontmatter e usare le backreferences con biblatex.

              Un vero peccato, per me. 🙁

            • #78634
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Si può fare, ma non definendo \thepage come \textsc{\value{page}}; bisogna lasciare che hyperref prelevi per i suoi hyperlink il numero romano minuscolo e che in tutti i posti dove può apparire \thepage, qual posto contenga \textsc{…} oppure \scshape, come è più comando a seconda dei casi; quindi nelle testatine/piedini; nell’indice generale, nei riferimenti dell’indice analitico, nell’uso di \pageref (con \vpageref o \vref è molto più complicato), non credo che abbia importanza che hyperref usi per i suoi collegamenti ipertuestuali i numeri minoscoli o maiuscoletti, l’importante è che li possa usare, ma non li mostrerà mai sullo schermo.

                è un lavoraccio; io, come ho già detto, l’ho fatto per la GuidaGuIt, che per altro usa hyperref con rinvii anche alle pagine in maiuscoletto, ma l’ho fatto con la classe book; l’ho fatto con la classe texnologie basata su book oppure, a scelta, su memoir. Non avrei cuore a mettere le mani sulle classi Koma Script e sui loro derivati come ClassicThesis e ArsClassica, non perché sia particolarmente difficile, ma perché non mi ci trovo con il codice sorgente di quelle classi, anche ce ci ho messo le mani dentro più di una volta.

                Non credo, dopo averle provate tutte (almeno tutte quelle che conosco), che si possa risolvere il problema cercando di mettere delle toppe ai comandi esistenti. Ma non escludo che invece sia possibile, solo che non ne sono capace. Chissà con i comandi l3…?

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

            Go to top