Allineare numeri di pagina

  • Creatore
    Topic
  • #114501
    samiel
    Partecipante
      Up
      0
      Down
      ::


      partendo da questo codice che per il resto soddisfa le mie esigenze
      `\documentclass[a4paper]{report}
      \usepackage{fontspec}
      \usepackage{polyglossia}
      \setmainfont[Ligatures=TeX,Numbers=OldStyle]{EB Garamond}
      \setmainlanguage[babelshorthands=true]{italian}
      \PolyglossiaSetup{italian}{indentfirst=false}
      \frenchspacing
      \usepackage{lipsum}

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      \usepackage{titletoc}

      \titlecontents{chapter}
      [3em]
      {\vspace*{\baselineskip}\mdseries}
      {\contentslabel[\hfill\thecontentslabel\phantom{.}]{3em}\enspace}
      {\hspace*{0.5em}}
      {}
      []

      \titlecontents{section}
      [3em]
      {\vspace*{\baselineskip}\mdseries}
      {\contentslabel[\hfill\thecontentslabel\phantom{.}]{3em}\enspace}
      {}
      {\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][l]{\thecontentspage}}}
      []

      \titlecontents*{subsection}
      [3.525em]
      {\footnotesize}
      {}
      {}
      {,~\thecontentspage}
      [~–~]
      []

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      \usepackage{titlesec}

      \titleformat{\chapter}[display]
      {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thechapter}{0pt}{}
      \renewcommand\thesection{\arabic{section}}
      \titleformat{\section}
      {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thesection}{1em}{}
      \titleformat{\subsection}
      {\normalfont\fontsize{11pt}{12pt}\selectfont\itshape}{\phantom{\thesection}}{1em}{}
      \titlespacing{\chapter}{0pt}{0pt}{3cm}

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      \renewcommand{\thechapter}{\scshape\roman{chapter}}
      \renewcommand{\thesection}{\arabic{chapter}.\arabic{section}}

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      \begin{document}

      \tableofcontents

      \chapter{A Very Short History of Rhetoric}
      \section{The Greek World}

      \section{The Greek World}
      \subsection{Aristoteles}

      \chapter{A Very Short History of Rhetoric}
      \section{The Greek World}
      \subsection{Aristoteles}

      \section{The Greek World}
      \subsection{Aristoteles}

      \setcounter{page}{68}.
      \chapter{A Very Short History of Rhetoric}

      \section{The Greek World}
      \subsection{Aristoteles}

      \setcounter{page}{178}.
      \chapter{A Very Short History of Rhetoric}

      \section{The Greek World}
      \subsection{Aristoteles}

      \end{document}`
      qual è il trucco per allineare i numeri di pagine in base all’ultima cifra e non alla prima, ovvero per ottenere NON
      `1
      11
      123`
      MA
      ` 1
      11
      123`

      grazie
      m

    Visualizzazione 10 filoni di risposte
    • Autore
      Risposte
      • #114502
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          `{\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][r]{\thecontentspage}}}`Devi solo sostituire l con r nel secondo argomento facoltativo di \makebox

        • #114503
          samiel
          Partecipante
            Up
            0
            Down
            ::


            no, con quel codice i numero vanno sul lato destro del foglio.
            io invece voglio che restino su quello sinistro,
            ma nella forma che ho indicato, cioè con l’asse di allineamento
            sull’ultima cifra e non sulla prima

            m

          • #114504
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              `{\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][l]{\makebox[1pc][r]{\thecontentspage}}}}`

            • #114505
              samiel
              Partecipante
                Up
                0
                Down
                ::


                ho aggiunto
                `{\hspace*{0.5em}}`
                sull’opzione rilevante di \chapter per avere anche i tioli dei capitoli numberless correttamente allineai.
                Per li resto funziona perfettamente.
                Due cosette:
                1. su quale parametro devo agire per aumentare la distanza fra numero della pagina e il numero di sezione?
                2. a cosa serve il misterioso
                `\dimexpr\linewidth-1.3pc][l]`
                cos’ non copio e basta come fa al ginnasio chi non è in grado di fare la versione? 🙂

                grazie mille

                m

              • #114506
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Quel \dimexpr era già nel codice che hai postato fin dall’inizio; dice esattamente che quella è una espressione dimensionale il cui risultato è la differenza fra la giustezza corrente e 1.3pc ( 1,3 pica). Se ne vuoi sapre di più: texdoc etex paragrafo 3.5 pagina 8.
                  L’estensione eTeX esiste da almeno una decina d’anni e permette di fare alcuni conti con comandi che agiscono direttamente nei registri della CPU del calcolatore, invece che mediante macro come fa il pacchetto calc. In particolare trovo particolarmente interessante l’operazione di scalmento (come è indicata in quella documentazione): [tt] \a = \dimexpr \b*\c/\d[/tt] dove [tt]\a, \b, \c, \d[/tt] sono lunghezze rigide e il risultato sono grandezze elastiche (con [tt]\gluexpr[/tt] si ottengono espressioni fra grandezze elastiche). L’operazione è interessante perché le lunghezze sono conservate in registri di 32 bit (di fatto uno è per il segno e uno è per marcare un valore non valido, quindi restano 30 bit significativi che esprimono la dimensione mediante un numero intero di scaled point (sp); ecco perché il massimo valore di na lunghezza vale $10^{31}sp = 16382,99999pt$ poco più di 5 metri. Ma la prima moltiplicazione manderebbe il risultato in overflow se l’operazione fossa fatta conservando i risultati parziali in registri dimensionali di TeX; invece il prodotto intermedio con l’espressione dimensionale viene conservato in un registro della CPU a 62 bit, senza andare in overflow, e quando viene diviso per un numero (non troppo piccolo) a 32 bit, torna un risultato leggermente arrotondato a 32 bit.

                  Le espressioni native di TeX permettono la somma algebrica, la moltiplicazione e la divisioni e sono tutte operazioni fra interi e quindi le lunghezze rigide ed elastiche sono espresse mediante numeri interi di scaled point; calc fa molto meglio; in ogni caso le divisioni sono divisioni intere sono sempre risultati per difetto, mentre [\dimexpr[/tt] e [tt]\gluexpr[/tt] producono un arrotondamento.

                  Io non uso mai calc, perché le estensioni di calcolo di eTeX (incorporate in tutti e tre i compilatori pdftex, xetex e luatex – quindi anche in pdfLaTeX, XeLaTeX e LuaLatex) mi sembrano più efficaci e lo vedi dalla documentazione.

                  La documentazione spiega meglio queste cose di quanto io possa fare in un messaggio del forum.

                  Naturalmente tu sai che cosa fa [tt]\hfill[/tt] e [tt]\llap[/tt] oltre alle varie proprietà di [tt]\makebox[/tt] con le sue due opzioni.

                  Per aumentare la distanza devi giocare sui 3em oppure su 1.3pc oppure su 1pc perché interagiscono fra loro e quindi devi sperimentare modificandone uno alla volta per vedere che cosa succede; attenzione a non sbordare nel margine sinistro.

                • #114507
                  samiel
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    grazie della spiegazione. ricordo la trattazione in knuth su spazi e larghezze elastiche (la colla),
                    ma non sempre passar dalla teoria alla pratica è agevole.

                    hfill so cosa fa e qui è fondamentale per avere i numeri a sinistra.
                    so in astratto cosa fa \llap, non sempre mi è chiaro cosa fa in effetti.

                    Ho aumentato lo spazio giocando sui 3 em, non su 1.3pc perché ho tolto l’indicazione
                    del numero delle pagine a chapter.

                    Un’ultima cosa, poi questo faticosissimo indice dovrebbe essere a posto.
                    Lo spazio fra i titoli è sempre uguale, ma io vorrei avvicinare i titoli

                    delle varie sezioni dello stesso capitolo. In questo caso che indicazione devo mettere?

                  • #114508
                    OldClaudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      A me non viene come dici tu; il mio esempio minimo, che non contiene al tua ultima modifica, è il seguente`% !TEX TS-program = XeLaTeX
                      % !TEX encoding = UTF-8 Unicode
                      \documentclass[a4paper]{report}
                      \usepackage{fontspec}
                      \usepackage{polyglossia}
                      \setmainfont[Ligatures=TeX,Numbers=OldStyle]{EB Garamond}
                      \setmainlanguage[babelshorthands=true]{italian}
                      \PolyglossiaSetup{italian}{indentfirst=false}
                      \frenchspacing
                      \usepackage{lipsum}

                      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                      \usepackage{titletoc}

                      \titlecontents{chapter}
                      [3em]
                      {\vspace*{\baselineskip}\mdseries}
                      {\contentslabel[\hfill\thecontentslabel\phantom{.}]{3em}\enspace}
                      {\hspace*{0.5em}}
                      {}
                      []

                      \titlecontents{section}
                      [3em]
                      {\vspace*{\baselineskip}\mdseries}
                      {\contentslabel[\hfill\thecontentslabel\phantom{.}]{3em}\enspace}
                      {}
                      {\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][l]{\makebox[1pc][r]{\thecontentspage}}}}
                      []

                      \titlecontents*{subsection}
                      [3.525em]
                      {\footnotesize}
                      {}
                      {}
                      {,~\thecontentspage}
                      [~–~]
                      []

                      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                      \usepackage{titlesec}

                      \titleformat{\chapter}[display]
                      {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thechapter}{0pt}{}
                      \renewcommand\thesection{\arabic{section}}
                      \titleformat{\section}
                      {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thesection}{1em}{}
                      \titleformat{\subsection}
                      {\normalfont\fontsize{11pt}{12pt}\selectfont\itshape}{\phantom{\thesection}}{1em}{}
                      \titlespacing{\chapter}{0pt}{0pt}{3cm}

                      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                      \renewcommand{\thechapter}{\scshape\roman{chapter}}
                      \renewcommand{\thesection}{\arabic{chapter}.\arabic{section}}

                      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                      \begin{document}

                      \tableofcontents

                      \chapter{A Very Short History of Rhetoric}
                      \section{The Greek World}

                      \section{The Greek World}
                      \subsection{Aristoteles}

                      \chapter{A Very Short History of Rhetoric}
                      \section{The Greek World}
                      \subsection{Aristoteles}

                      \section{The Greek World}
                      \subsection{Aristoteles}

                      \setcounter{page}{68}.
                      \chapter{A Very Short History of Rhetoric}

                      \section{The Greek World}
                      \subsection{Aristoteles}

                      \setcounter{page}{178}.
                      \chapter{A Very Short History of Rhetoric}

                      \section{The Greek World}
                      \subsection{Aristoteles}

                      \end{document}`e a me vengono i capitoli preceduti da circa una riga vuota e i titoli delle sezioni ben accostati sotto i titoli dei capitoli, proprio come tu vorresti.

                    • #114509
                      samiel
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        mi ero spiegato male: c’era lo stesso spazio fra titolo capitolo / titolo sezione
                        e titolo sezione / titolo sezione ed era questo che volevo ridurre.
                        Cmq fatto con
                        `\titlecontents{section}
                        [4em]
                        {\vspace*{.2\baselineskip}\mdseries\small}
                        {\contentslabel[\hfill\thecontentslabel]{3em}\enspace}
                        {}
                        %{\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][l]{\thecontentspage}}} % page number aligned to l
                        {\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][l]{\makebox[1pc][r]{\thecontentspage}}}} % page number aligned to r
                        []`
                        dunque riducendo [tt]\baselineskip[/tt]

                        grazie
                        m

                      • #114510
                        samiel
                        Partecipante
                          Up
                          0
                          Down
                          ::


                          il manuale di etoc non è che sia proprio immediato…
                          lo sto guardando, ma poi l’applicazione per casi specifici
                          come il mio (costruire l’indice in un certo modo)
                          non è affatto lineare e diretta, almeno per me.

                          anche titlesec / titletoc qui sono stati usato
                          ben oltre quello che spiega il relativo manuale

                          “salteremo di qua e di là
                          e aumenterà la nostra conoscenza”…

                          in ogni caso problema felicemente risolto
                          grazie ancora
                          m

                        • #114511
                          OldClaudio
                          Partecipante
                            Up
                            0
                            Down
                            ::


                            Quella dimexpr è banale: dice che la lunghezza da usare è il risultato di quell’espressione.

                            La specifica per mettere il numero di pagina a sinistra è complicata, perché normalmente la scrittura procede da sinistra a destra. MA dice in sostanza:
                            1) rientra di 4em
                            2) imposta la spaziatura verticale di 0.2\baselineskip prima di scrivere quel che devi scrivere
                            3) scrivi l’etichetta della sezione in una scatola larga 3em ma accostandono il contenuto a destra lasciando prima della fine uno spazio di un punto interpuntivo reso invisibile perché trasformato in un punto fantasma. poi separa con uno spazio rigido largo come una “n” (metà si un em)
                            4) L’argomento vuoto non ci interessa, a a questo punto siamo quasi a fine giustezza
                            5) spostati a fine giustezza con \hfill; mettici una scatola orizzontale di larghezza nulla e con il suo contenuto sporgente a sinistra; questo contenuto è un scatola orizzontale larga quanto quell’espressione e con il suo contenuto accostato a sinistra; quindi ora siamo praticamente tornati all’inizio della riga dove mettiamo il contenuto costituito da una scatola larga un pica e con il suo contento accostato a destra.

                            Che sia complicato non c’è dubbio; ma che non sia difficile da interpretare, magari aggiungendoci qualcosa di intuito, non è difficile nemmeno quello; d’altra parte quando di vuol fare qualcosa di diverso dal normale, è quasi obbligatorio giocare con le scatole a mo’ di matriosche; e talvolta bisogna annidare le scatole una dentro l’altra alternando quelle verticali con quelle orizzontali. Sono d’accordo con te che non sia pane per i denti di tutti, ma tu non sei un principiante, quindi se ti ci metti non dovresti avere difficoltà a districarti in questi giri di scatole. Confesso che talvolta mi ci perdo anch’io, ma per ora sono sempre riuscito a districarmi.

                          • #114512
                            samiel
                            Partecipante
                              Up
                              0
                              Down
                              ::


                              diciamo in generale che se si seguono i modelli prefigurati
                              l’apprendimento di LaTeX può essere anche molto rapido. Con sottomano l’Arte
                              credo che in pochissimi giorni anche il neofita possa fare cose egregie.
                              Se invece ci si trova davanti a problemi particolari oppure si vuole produrre
                              una personalizzazione “spinta”, allora il ricorso a LaTeX non è immediato.
                              Dopo di che… personalmente appartengo a quelli che si divertono
                              a “perdere tempo” per ottenere belle impaginazioni, in un mondo
                              che reputa il Comic Sans il font più bello del mondo 🙂

                              m

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

                          Go to top