Rivista con LaTeX

  • Creatore
    Topic
  • #82254
    Up
    0
    Down
    ::


    Buongiorno a tutti.

    Devo creare uno “scheletro” per una rivista scientifica di ambito umanistico; la rivista sarà disponibile solo in versione digitale.
    Riprendendo un suggerimento di Enrico in un vecchio (post sono arrivato a questo punto:

    `
    % !TEX encoding = UTF-8
    % !TEX program = xelatex
    \documentclass[notitlepage,11pt]{book}
    \usepackage[T1]{fontenc}
    \usepackage{fontspec}
    \usepackage{polyglossia}
    \setmainlanguage{italian}
    \setmainfont[Ligatures=TeX,Numbers=OldStyle]{Junicode}
    \setsansfont[Ligatures=TeX]{Iwona}
    \usepackage{tcon3}
    \usepackage{lipsum,fancyhdr,lettrine,emptypage}
    \usepackage[linktocpage, colorlinks]{hyperref}
    \usepackage{multicol}

    \usepackage{tocloft}
    \renewcommand{\cfttoctitlefont}{\hfill\upshape\Large} %Per `Indice – Sommario'
    \renewcommand{\cftaftertoctitle}{}
    \renewcommand{\cftaftertoctitle}{\hfill}
    \addto{\captionsitalian}{\renewcommand*{\contentsname}{Sommario}}
    \setcounter{tocdepth}{0} %solo i Capitoli (e le Parti) nel TOC
    \renewcommand{\thesection}{\arabic{section}} %modifico la numerazione delle Section (1 e non x.1)

    \begin{document}
    \frontmatter
    \tableofcontents

    \mainmatter

    \begin{contribution}
    \contribtitle{Il titolo del primo intervento. Con un sottotitolo}
    \contribauthor{Gianfranco Contini}
    \contribuni{Università di Firenze}
    \makecontributiontitle

    \begin{multicols}{2}
    \small
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
    adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna ingilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac,
    nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

    Nam dui ligula, ingilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo.
    Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.

    Pellentesque cursus luctus mauris. Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy
    pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac quam.
    \end{multicols}

    \begin{center}

    \textsc{sole, cuore, amore, pennutologia applicata, Tizio Caio, critica dell'irrilevanza, tetrapilectomia applicata, opera nuova, altra parola}
    \end{center}

    \section{Introduzione}
    \lipsum[1-30]
    \end{contribution}

    \end{document}
    `

    dove tcon3.sty contiene (si tratta di una magia di Enrico che sto cercando di adattare alle mie esigenze):

    `
    \ProvidesPackage{tcon3}
    \newenvironment{contribution}
    {\def\contrib@author{??}
    \def\contrib@title{??}
    \def\contrib@uni{??}}
    {\cleardoublepage}
    \newcommand{\contribauthor}[1]{\def\contrib@author{#1}}
    \newcommand{\contribtitle}[1]{\def\contrib@title{#1}}
    \newcommand{\contribuni}[1]{\def\contrib@uni{#1}}
    \newcommand{\contributiontext}[1]{\makecontributiontitle\input{#1}}

    \def\makecontributiontitle{\thispagestyle{plain}%
    \vbox to 10pc{\vspace*{3pc}\parindent=\z@
    {\center\large\scshape\contrib@title\par}\medskip %
    {\center\scshape\contrib@author\par}
    {\center\itshape\contrib@uni\par}\vfill}
    \markboth{\contrib@title}{\contrib@author}
    \addcontentsline{toc}{contrib}{{\scshape\contrib@author, }{\emph{\contrib@title}}}}

    \def\l@contrib#1#2{%
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \begingroup
    \parindent \z@ \rightskip \@pnumwidth
    \parfillskip -\@pnumwidth
    \leavevmode
    \advance\leftskip\@tempdima
    \hskip -\leftskip
    \magigi@splittitle#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
    \penalty\@highpenalty
    \endgroup}
    \def\magigi@splittitle#1#2{#1 #2}

    \RequirePackage{fancyhdr}
    \pagestyle{fancy}
    \renewcommand{\chaptermark}[1]{}
    \renewcommand{\sectionmark}[1]{}
    \renewcommand{\headrulewidth}{\z@}
    \fancyhf{}
    \fancyhead[LE,RO]{\bfseries\small\thepage}
    \fancyhead[CO]{\scshape\nouppercase\leftmark}
    \fancyhead[CE]{\scshape\nouppercase\rightmark}

    \endinput`

    Alcune domande:
    1-come si può notare, dopo il titolo l’autore e l’afferenza troverà spazio l’abstract dell’articolo in italiano e inglese e 10 parole chiave; il testo dell’articolo inizia “troppo in basso” e vorrei alzare il titolo e diminuire lo spazio tra il titolo e l’autore: come fare?
    2-vorrei avere a disposizione un comando simile a \thanks, qualora dovessi inserire una nota iniziale, collegata al titolo dell’articolo
    3-come fare ad avere un titolo abbreviato? Il massimo sarebbe avere il comando \contribtitle[Titolo breve solo per testatine]{Titolo lunghissimo}

    Grazie in anticipo!
    A presto,
    Matteo

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


      Dopo un po’ di tentativi ho iniziato a capire il codice.

      `
      % !TEX encoding = UTF-8
      % !TEX program = xelatex
      \documentclass[notitlepage,11pt]{book}
      \usepackage[T1]{fontenc}
      \usepackage{fontspec}
      \usepackage{polyglossia}
      \setmainlanguage{italian}
      \setmainfont[Ligatures=TeX,Numbers=OldStyle]{Junicode}
      \usepackage{tcon3}
      \usepackage{lipsum,fancyhdr,emptypage}
      \usepackage[linktocpage, colorlinks]{hyperref}
      \usepackage{multicol}
      \begin{document}
      \frontmatter
      \tableofcontents
      \mainmatter
      \begin{contribution}
      \contribtitle{Il titolo del primo intervento. Con un sottotitolo davvero molto, molto lungo}
      \contribauthor{Gianfranco Contini}
      \contribuni{Università di Firenze}
      \makecontributiontitle
      \lipsum\lipsum
      \end{contribution}
      \end{document}
      `

      e questo è tcon3.sty
      `\ProvidesPackage{tcon3}

      \newenvironment{contribution}
      {\def\contrib@author{??}
      \def\contrib@title{??}
      \def\contrib@uni{??}}
      {\cleardoublepage}

      \newcommand{\contribauthor}[1]{\def\contrib@author{#1}}
      \newcommand{\contribtitle}[1]{\def\contrib@title{#1}}
      \newcommand{\contribuni}[1]{\def\contrib@uni{#1}}

      \newcommand{\contributiontext}[1]{\makecontributiontitle\input{#1}}

      \def\makecontributiontitle{\thispagestyle{plain}%
      \vbox to 10pc{\vspace*{0.5pc}\parindent=\z@
      {\center\Large\scshape\MakeLowercase\contrib@title\par} %
      {\center\scshape\contrib@author\par}
      {\center\itshape\contrib@uni\par}\vfill}
      \markboth{\contrib@title}{\contrib@author}
      \addcontentsline{toc}{contrib}{{\scshape\contrib@author, }{\emph{\contrib@title}}}}

      \def\l@contrib#1#2{%
      \addpenalty{-\@highpenalty}%
      \vskip 0.1em \@plus\p@
      \setlength\@tempdima{1.5em}%
      \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      \magigi@splittitle#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
      \penalty\@highpenalty
      \endgroup}
      \def\magigi@splittitle#1#2{#1 #2}

      \RequirePackage{fancyhdr}
      \pagestyle{fancy}
      \renewcommand{\chaptermark}[1]{}
      \renewcommand{\sectionmark}[1]{}
      \fancyhf{}
      \fancyhead[LE,RO]{\bfseries\small\thepage}
      \fancyhead[CO]{\scshape\MakeLowercase\leftmark}
      \fancyhead[CE]{\scshape\nouppercase\rightmark}
      \fancyfoot[CE,CO]{Ticon3. Teoria Testo Traduzione — I (2013)}
      \endinput`

      Purtoppo non riesco a capire come modficare tcon3.sty per ottenere il comando \contribtitle[titolo breve]{titolo lungo}: trattandosi di una magia di Enrico mi è difficile interventire.
      Ringrazio in anticipo.

      A presto,
      Matteo

    • #82256
      franen
      Partecipante
        Up
        0
        Down
        ::


        Forse poco elegante, ma funziona (mette i titolo corto solo nelle testatine e non nell’indice)
        `\ProvidesPackage{tcon3}
        \RequirePackage{etoolbox} %aggiunto

        \newenvironment{contribution}
        {\def\contrib@author{??}
        \def\contrib@title{??}
        \def\contrib@uni{??}}
        {\cleardoublepage}
        \newcommand{\contribauthor}[1]{\def\contrib@author{#1}}
        \newcommand{\contribtitle}[2][]{% modificato
        \def\contrib@title{#2}
        \ifstrempty{#1}{\def\contribshort@title{#2}}{\def\contribshort@title{#1}}}
        \newcommand{\contribuni}[1]{\def\contrib@uni{#1}}
        \newcommand{\contributiontext}[1]{\makecontributiontitle\input{#1}}

        \def\makecontributiontitle{\thispagestyle{plain}%
        \vbox to 10pc{\vspace*{3pc}\parindent=\z@
        {\center\large\scshape\contrib@title\par}\medskip %
        {\center\scshape\contrib@author\par}
        {\center\itshape\contrib@uni\par}\vfill}
        \markboth{\contribshort@title}{\contrib@author} %modificato
        \addcontentsline{toc}{contrib}{{\scshape\contrib@author, }{\emph{\contrib@title}}}}

        \def\l@contrib#1#2{%
        \addpenalty{-\@highpenalty}%
        \vskip 1.0em \@plus\p@
        \setlength\@tempdima{1.5em}%
        \begingroup
        \parindent \z@ \rightskip \@pnumwidth
        \parfillskip -\@pnumwidth
        \leavevmode
        \advance\leftskip\@tempdima
        \hskip -\leftskip
        \magigi@splittitle#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
        \penalty\@highpenalty
        \endgroup}
        \def\magigi@splittitle#1#2{#1 #2}

        \RequirePackage{fancyhdr}
        \pagestyle{fancy}
        \renewcommand{\chaptermark}[1]{}
        \renewcommand{\sectionmark}[1]{}
        \renewcommand{\headrulewidth}{\z@}
        \fancyhf{}
        \fancyhead[LE,RO]{\bfseries\small\thepage}
        \fancyhead[CO]{\scshape\nouppercase\leftmark}
        \fancyhead[CE]{\scshape\nouppercase\rightmark}

        \endinput`

        Forse guardando nei file della classe book o memoir si trova qualcosa di fatto meglio.

        Fran

      • #82257
        Up
        0
        Down
        ::


        Grazie mille!
        Stavo lavorando ad una soluzione analoga, ma non ruscivo a trovare la soluzione.
        L’ultimo dubbio: non riesco a capire questa parte del codice

        `
        \def\l@contrib#1#2{%
        \addpenalty{-\@highpenalty}%
        \vskip 1.0em \@plus\p@
        \setlength\@tempdima{1.5em}%
        \begingroup
        \parindent \z@ \rightskip \@pnumwidth
        \parfillskip -\@pnumwidth
        \leavevmode
        \advance\leftskip\@tempdima
        \hskip -\leftskip
        \magigi@splittitle#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
        \penalty\@highpenalty
        \endgroup}
        \def\magigi@splittitle#1#2{#1 #2}`

        L’unica cosa che mi è chiara è che la terza riga comanda lo spazio nella toc.

        A presto,
        Matteo

      • #82258
        franen
        Partecipante
          Up
          0
          Down
          ::


          Ci provo… 🙂

          Quando si vuole aggiungere qualcosa all’indice (table of contents) si usa il comando `\addcontentsline{toc}{qualcosa}{Cosa voglio aggiungere}`
          Se compilo un documento (avendo scritto [tt]\tableofcontents[/tt] da qualche parte) viene creato un file .toc che contiene la stringa `\contentsline {qualcosa}{Cosa voglio aggiungere}{numero di pagina}`
          e [tt]\contentsline[/tt] è definito in latex.ltx come [tt]\def\contentsline#1{\csname l@#1\endcsname}
          [/tt].
          Cioè nel nostro caso richiama un comando [tt]\l@qualcosa[/tt]. pdflatex dovrà quindi eseguire [tt]\l@qualcosa{Cosa voglio aggiungere}{numero di pagina}[/tt].

          Se guardi book.cls troverai: `\newcommand*\l@chapter[2]{%
          \ifnum \c@tocdepth >\m@ne
          \addpenalty{-\@highpenalty}%
          \vskip 1.0em \@plus\p@
          \setlength\@tempdima{1.5em}%
          \begingroup
          \parindent \z@ \rightskip \@pnumwidth
          \parfillskip -\@pnumwidth
          \leavevmode \bfseries
          \advance\leftskip\@tempdima
          \hskip -\leftskip
          #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
          \penalty\@highpenalty
          \endgroup
          \fi}
          ` che è simile alla definizione di Enrico. Il comando [tt]\l@chapter[/tt] ha due argomenti, uno è il titolo del capitolo, l’altro è il numero di pagina.
          Poi, nell’ordine:
          – \addpenalty è un comando di LaTeX (latex.ltx) che aggiunge una penalità e fa un altro po’ di cose che non ho capito
          – \@highpenalty è definito in latex.ltx e vale 301 (per la classe book)
          – \vskip, come hai scritto tu, regola la spaziatura dopo a ogni voce
          – \setlength… imposta il registro dimensionale \@tempdima a 1,5 em
          – mette a zero il rientro di capoverso
          – imposta \rightskip (uno spzio da lasciare a fine riga) pari a \@pnumwidth (che è le lunghezza dedicata ai numeri di pagina, 1,55 em per la classe book)
          – \parfillskip indica, in parole povere, come deve comportarsi l’ultima riga di un capoverso: se fosse zero vorrebbe dire che l’ultima lettera dell’ultima riga dovrebbe arrivare fino al margine destro. Normalmente vale 0pt plus 1fil, cioè l’ultima riga non viene costretta ad allungarsi o accorciarsi ma mantiene la sua larghezza naturale. Qui il gioco è questo: ho impostato \rightskip perché il testo della mia voce arrivi al massimo a 1,55 em dal margine destro. Ora però voglio che i numeri di pagina siano allineati al margine destro, quindi imposto \parfillskip in modo che la mia riga “sbordi” a destra di 1,55 em rispetto al margine che ho impostato prima (e quindi è perfettamente allinata a destra)
          – \leavevmode mi porta in modo orizzontale
          – aumento il margine sinistro di \@tempdima e poi aggiungo uno spazio negativo pari a \@tempdima. Inutile? No, serve a far sì che se hai un titolo che occupa più di una riga avrai il numero del capitolo a sistra e il testo del titolo allineato. Il trucco funziona perché il comando \numberline (vedi file .toc) usa una scatola larga \@tempdima.
          – aggiungeil testo del titolo (#1), impedisce un’interruzione di riga, riempie la riga e poi iserisce una scatola larga \@pnumwidth in cui, allineato a destra, c’è il numero di pagina.
          – aggiunge una penalità positiva per rendere sfavorevole un’interruzione.

          Prova un po’ a giocare con questo file, modificando i parametri di \l@chapter per vedere che succede: `\documentclass{book}
          \makeatletter
          \renewcommand*\l@chapter[2]{%
          \ifnum \c@tocdepth >\m@ne
          \addpenalty{-\@highpenalty}%
          \vskip 1.0em \@plus\p@
          \setlength\@tempdima{1.5em}%
          \begingroup
          \parindent \z@
          \rightskip \@pnumwidth
          \parfillskip -\@pnumwidth
          \leavevmode \bfseries
          \advance\leftskip\@tempdima
          \hskip -\leftskip
          #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
          \penalty\@highpenalty
          \endgroup
          \fi}

          \makeatother
          \begin{document}
          \tableofcontents
          \chapter{Mio titolo lunghissimo che certamente non starà in una sola riga perché ho deciso io cos}

          testo da scrivere sotto

          \chapter{Tuo titolo}
          testo da scrivere sotto
          \end{document}
          `

        • #82259
          Up
          0
          Down
          ::

          teomat” post=81616Grazie mille!
          Stavo lavorando ad una soluzione analoga, ma non ruscivo a trovare la soluzione.
          L’ultimo dubbio: non riesco a capire questa parte del codice

          `
          \def\l@contrib#1#2{%
          \addpenalty{-\@highpenalty}%
          \vskip 1.0em \@plus\p@
          \setlength\@tempdima{1.5em}%
          \begingroup
          \parindent \z@ \rightskip \@pnumwidth
          \parfillskip -\@pnumwidth
          \leavevmode
          \advance\leftskip\@tempdima
          \hskip -\leftskip
          \magigi@splittitle#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
          \penalty\@highpenalty
          \endgroup}
          \def\magigi@splittitle#1#2{#1 #2}`

          L’unica cosa che mi è chiara è che la terza riga comanda lo spazio nella toc.

          A presto,
          Matteo

          È la macro per elaborare ciò che si trova nel file .toc con [tt]\contentsline{contrib}[/tt].

          Viene emessa una penalità che favorisce un cambio pagina prima della riga nell’indice; poi uno spazio leggermente flessibile; si dà un valore a lunghezza temporanea. Nel gruppo si impostano i parametri: [tt]\parindent[/tt] a zero, [tt]\rightskip[/tt] uguale alla larghezza riservata ai numeri di pagina, [tt]\parfillskip[/tt] all’opposto, in modo che il numero di pagina venga allineato al margine destro. Poi si compone l’indice; il margine sinistro viene spostato di [tt]\@tempdima[/tt], ma la prima riga comincia al margine sinistro precedente; il titolo, che evidentemente è stato memorizzato in due gruppi di graffe, viene composto con uno spazio fra le due parti; si impedisce un fine riga, si riempie la riga fino in fondo e si aggiunge il numero di pagina. Fine del capoverso e penalità che scoraggia un cambio pagina. Fine del gruppo, che annulla le precedenti impostazioni dei parametri.

          Ciao
          Enrico

        • #82260
          Up
          0
          Down
          ::


          Grazie mille sia a Franen sia a Enrico per le spiegazioni: ora il codice mi è più chiaro.
          A presto,
          Matteo

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

      Go to top