Comando simile a \thanks in classe personale

  • Creatore
    Topic
  • #83082
    Up
    0
    Down
    ::


    Buongiorno a tutti,
    il titolo è un po’ criptico, ma si tratta ancora della rivista.

    Lavorando al codice suggerito da Enrico, sono arrivato a questo punto:

    `
    % !TEX encoding = UTF-8
    % !TEX program = xelatex

    \documentclass[titlepage,11pt,twoside]{book}
    \usepackage[T1]{fontenc}
    \usepackage{fontspec}
    \usepackage{polyglossia}
    \setmainlanguage{italian}
    \setmainfont[Ligatures=TeX,Numbers=OldStyle]{EB Garamond}
    \usepackage{t3}
    \usepackage{lipsum,fancyhdr,enumitem,emptypage}
    \usepackage{hyperref}
    \hypersetup{linktocpage}
    %%%%%%%%%%%%%
    %TITOLI, TOC, etc.
    %%%%%%%%%%%%%
    %per modificare i titoli (capitoli, parti, etc.) nel documento
    \usepackage{titlesec}
    \titleformat{\section}{\scshape\Large}{\thesection}{1em}{}
    \titleformat{\subsection}{\scshape\large}{\thesubsection}{1em}{}
    \titleformat{\chapter}[display]{\Huge\scshape\filcenter}{}{3em}{}
    %%%%%%%%%%%
    \usepackage{tocloft}
    \renewcommand{\cfttoctitlefont}{\hfill\upshape\Large} %Per `Indice – Sommario'
    \renewcommand{\cftaftertoctitle}{}
    \renewcommand{\cftaftertoctitle}{\hfill}
    \addto{\captionsitalian}{\renewcommand*{\contentsname}{Sommario — I 2013}}
    \setcounter{tocdepth}{0} %solo le Parti nel TOC
    \renewcommand{\thesection}{\arabic{section}} %modifico la numerazione delle Section (1 e non x.1)
    \setlength{\cftbeforepartskip}{0.3cm}
    \setlength{\cftbeforetoctitleskip}{0pt}
    \setlength{\cftaftertoctitleskip}{15pt}
    \setlength{\cftpartindent}{20pt}
    \renewcommand{\cftpartfont}{\scshape} %garamond
    %%%%%%%%%%%%%
    \pagestyle{fancy}
    \renewcommand{\chaptermark}[1]{}
    \renewcommand{\sectionmark}[1]{}
    \fancyhf{}
    \fancyhead[LE,RO]{\small\thepage}
    \fancyhead[CO]{\scshape\MakeLowercase\leftmark}
    \fancyhead[CE]{\scshape\nouppercase\rightmark}
    \fancyfoot[CE,CO]{Titolo — numero}
    \makeatletter
    \let\ps@plain\ps@empty
    \makeatother
    \newenvironment{citazione} %citazione: basta inserire \begin{citazione}
    {\begin{quotation}\small}
    {\end{quotation}}

    \begin{document}

    \tableofcontents
    \clearpage
    \pagestyle{fancy}
    \phantomsection\begin{contribution}
    \contribtitle{Editoriale}
    \contribauthor{Tizio Caio}
    \contribsecondauthor{Sempronio Neri}
    \contribuni{Università di Firenze}
    \contribseconduni{Università di Palermo}

    \makecontributiontitle

    \section{introduzione}
    \lipsum[1]
    \begin{citazione}
    \lipsum[1]
    \end{citazione}
    \lipsum[3-9]
    \end{contribution}
    \end{document}
    `

    e t3.sty contiene:

    `
    \ProvidesPackage{t3}
    \RequirePackage{etoolbox}
    \newenvironment{contribution}
    {\def\contrib@author{??}
    \def\contrib@title{??}
    \def\contrib@uni{??}}
    {\cleardoublepage}

    \newcommand{\contribauthor}[1]{\def\contrib@author{#1}}
    \newcommand{\contribsecondauthor}[1]{\def\contrib@secondauthor{#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{\contribseconduni}[1]{\def\contrib@seconduni{#1}}

    \def\makecontributiontitle{\thispagestyle{plain}%
    \vbox to 4pc{\vspace*{0.1pc}\parindent=\z@
    {\linespread{0.73}\center\LARGE\scshape\MakeLowercase\contrib@title\par} %
    \ifstrempty{\contrib@secondauthor}{\center{\scshape\contrib@author\ }–{\itshape\contrib@uni\par}}{\center{\scshape\contrib@author\ }– {\itshape\contrib@uni} \\ {\scshape\contrib@secondauthor\ }– \itshape\contrib@seconduni\par}\vfill}
    %\markboth{\contrib@title}{\contrib@author}

    \ifstrempty{\contrib@secondauthor}{\markboth{\contribshort@title}{\contrib@author}}{\markboth{\contribshort@title}{\contrib@author, \contrib@secondauthor}}

    \ifstrempty{\contrib@secondauthor}{\addcontentsline{toc}{contrib}{{\scshape\contrib@author, }{\emph{\contrib@title}}}}{\addcontentsline{toc}{contrib}{{\scshape\contrib@author, \contrib@secondauthor, }{\emph{\contrib@title}}}}%
    \setcounter{footnote}{0} \setcounter{section}{0}}

    \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}
    \endinput

    \renewcommand\part{%
    \if@openright
    \cleardoublepage
    \else
    \clearpage
    \fi
    \thispagestyle{empty}%
    \if@twocolumn
    \onecolumn
    \@tempswatrue
    \else
    \@tempswafalse
    \fi
    \null\vfil
    \secdef\@part\@spart}
    `

    Rispetto al codice suggerito da Enrico ho introdotto il comando \contribuni (per l’afferenza degli autori) e i comandi \contibsecondauthor e \contribseconduni nel caso ci fossero due autori di un medesimo articolo (il codice è molto `sporco’ ma non riuscivo a creare comandi adatti con un argomento opzionale).

    A parte consigli su come semplificare il codice, che sarebbero i benvenuti, avrei bisogno di avere un comando sul tipo di \thanks.
    Questo comando, opzionale, dovrebbe stampare un esponente con un simbolo (ad esempio una asterisco) al titolo del saggio e una nota dove inserire il contenuto del comando stesso.
    Ho fatto diversi tentativi ma non sono riuscito a venirne a capo.

    Grazie in anticipo!
    A presto,
    Matteo

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #83083
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Matteo, non fare tentavi, ma apri la classe book.cls, copia la definizione di \thanks nella tua classe, e poi eventualmente modificale per ottenere esattamente quello che vuoi; è molto più semplice e non è vietato copiare codice del nucleo di LaTeX e delle classi standard; magari metti nel tuo file di classe il fatto che hai copiato la definizione di \thanks e che l’hai modificata (riconoscere il lavoro altrui va sempre fatto, secondo me).

      • #83084
        Up
        0
        Down
        ::

        OldClaudio” post=82422Matteo, non fare tentavi, ma apri la classe book.cls, copia la definizione di \thanks nella tua classe, e poi eventualmente modificale per ottenere esattamente quello che vuoi

        il problema è che ho già provato a fare quello che mi suggerisci (è stato il primo tentativo), ma non capisco quale sia la definizione di \thanks e dove inserirla di preciso nel mio t3.sty.
        A presto,
        Matteo

      • #83085
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          In realtà la definizione di \thanks è semplice:
          `\def\thanks#1{\footnotemark
          \protected@xdef\@thanks{\@thanks
          \protect\footnotetext[\the\c@footnote]{#1}}`
          \dove \footnotemark scrive il richiamo e il resto serve per mettere il testo oggetto di \thanks nel comando che ne stiva in memoria il testo per poi inserirlo in calce al momento giusto; niente di molto diverso da una nota “normale”, solo un po’ semplificato.

          Il trucco sta nel come viene scritto il richiamo della nota.

          Se vai a vedere nella classe book, alla riga 225 di book.cls, trovi la definizione di \maketitle, e in questa definzioneviene ridefinito il modo di rappresentare il numero delle note alla riga 227; questa è la riga magica che fa scrivere i richiami di nota con dei simboli invece che con delle cifre o delle lettere.

          Questa è la riga magica che devi inserire in quel pezzo di codice dove cuoi definire il comando per scrivere le afferenze degli autori.

        • #83086
          Up
          0
          Down
          ::


          Claudio, grazie per i chiarimenti, putroppo non riesco a risolvere il problema.
          Ho semplificato il codice:

          `
          % !TEX encoding = UTF-8
          % !TEX program = xelatex
          \documentclass[titlepage,11pt,twoside]{book}
          \usepackage[T1]{fontenc}
          \usepackage{fontspec}
          \usepackage{polyglossia}
          \setmainlanguage{italian}
          \setmainfont[Ligatures=TeX,Numbers=OldStyle]{EB Garamond}
          \usepackage{t3}
          \usepackage{lipsum,fancyhdr,enumitem,emptypage}
          \makeatletter
          \let\ps@plain\ps@empty
          \makeatother
          \begin{document}
          \tableofcontents
          \clearpage
          \begin{contribution}
          \contribtitle{Editoriale}
          \contribauthor{Tizio Caio}
          \contribuni{Università di Firenze}
          \thanks{Prova}
          \makecontributiontitle
          \lipsum[1]
          \end{contribution}
          \end{document}
          `

          e il file di stile t3.sty

          `
          \ProvidesPackage{t3}
          \RequirePackage{etoolbox}
          \newenvironment{contribution}
          {\def\contrib@author{??}
          \def\contrib@title{??}
          \def\contrib@uni{??}}
          {\cleardoublepage}

          \newcommand{\contribauthor}[1]{\def\contrib@author{#1}}

          %%comando \thanks tratto da latex.ltx
          \def\thanks#1{\footnotemark
          \protected@xdef\@thanks{\@thanks
          \protect\footnotetext[\the\c@footnote]{#1}}%
          }
          %%

          \newcommand{\contribtitle}[2][]{%
          \def\contrib@title{#2}
          \ifstrempty{#1}{\def\contribshort@title{#2}}{\def\contribshort@title{#1}}}
          \newcommand{\contribuni}[1]{\def\contrib@uni{#1}}

          \def\makecontributiontitle{\thispagestyle{plain}%
          %%comando da book.cls rr. 227-231
          \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
          \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
          \long\def\@makefntext##1{\parindent 1em\noindent
          \hb@xt@1.8em{%
          \hss\@textsuperscript{\normalfont\@thefnmark}}##1}

          \vbox to 4pc{\vspace*{0.1pc}\parindent=\z@
          %%%%%
          \@thanks
          %%%%%
          {\linespread{0.73}\center\LARGE\scshape\MakeLowercase\contrib@title\par}%
          {\center{\scshape\contrib@author\ }–{ \itshape\contrib@uni\par}\vfill}}}
          `

          Ma non ottengo quello che vorrei, cioè una nota al piede che stampi il contenuto di \thanks con l’esponente in corrispondenza del titolo del contributo.

          Ringrazio di cuore in anticipo.
          A presto,
          Matteo

        • #83087
          Up
          0
          Down
          ::


          Ciao a tutti,
          riapro la questione poiché credo di aver risolto, anche se molto `artigianalmente’.

          `
          % !TEX encoding = UTF-8
          % !TEX program = xelatex

          \documentclass[titlepage,11pt,twoside,a4paper]{book}
          \usepackage[T1]{fontenc}
          \usepackage{fontspec}
          \usepackage{polyglossia}
          \setmainlanguage{italian}
          \setmainfont[Ligatures=TeX,Numbers=OldStyle]{EB Garamond}
          \usepackage{lipsum,etoolbox}

          %per eliminare i numeri di pagina nella prima pagina di: contributi, parti, toc
          \makeatletter
          \let\ps@plain\ps@empty
          \makeatother

          \makeatletter %ciò che segue è un estratto del file di stile
          \newenvironment{contribution}
          {\def\contrib@author{??}
          \def\contrib@title{??}
          \def\contrib@uni{??}}
          {\cleardoublepage}

          \newcommand{\contribauthor}[1]{\def\contrib@author{#1}}
          \newcommand{\contribuni}[1]{\def\contrib@uni{#1}}
          \newcommand{\contribtitle}[2][]{%
          \def\contrib@title{#2}
          \ifstrempty{#1}{\def\contribshort@title{#2}}{\def\contribshort@title{#1}}}
          \def\notainiziale{\xdef\@thefnmark{*}\@footnotetext}

          \def\makecontributiontitle{\thispagestyle{plain}%
          \vbox to 4pc{\vspace*{0.1pc}\parindent=\z@
          {\linespread{0.73}\center\LARGE\scshape\MakeLowercase\contrib@title\par}%
          {\center{\scshape\contrib@author\ }–{ \itshape\contrib@uni\par}\vfill}}
          {\markboth{\contribshort@title}{\contrib@author}}
          \addcontentsline{toc}{contrib}{{\scshape\contrib@author, }{\emph{\contrib@title}}}
          \setcounter{footnote}{0} \setcounter{section}{0}}

          \def\makecontributiontitlenota{\thispagestyle{plain}%
          \vbox to 4pc{\vspace*{0.1pc}\parindent=\z@
          {\linespread{0.73}\center\LARGE\scshape\MakeLowercase\contrib@title*\par}%
          {\center{\scshape\contrib@author\ }–{ \itshape\contrib@uni\par}\vfill}}
          {\markboth{\contribshort@title}{\contrib@author}}
          \addcontentsline{toc}{contrib}{{\scshape\contrib@author, }{\emph{\contrib@title}}}
          \setcounter{footnote}{0} \setcounter{section}{0}}
          \makeatother

          \begin{document}
          \begin{contribution}
          \contribtitle{Editoriale}
          \contribauthor{Tizio Caio}
          \contribuni{Università di Firenze}
          \notainiziale{Nota di prova con richiamo a stella, ancorato al titolo del contributo}
          \makecontributiontitlenota
          \section*{Introduzione}
          \lipsum[1]\lipsum[1]\footnote{Nota normale}
          \end{contribution}

          \begin{contribution}
          \contribtitle{Editoriale}
          \contribauthor{Tizio Caio}
          \contribuni{Università di Firenze}
          \makecontributiontitle
          \section*{Introduzione}
          \lipsum[1]\footnote{Nota normale}
          \end{contribution}
          \end{document}
          `

          Come si nota ho definito due comandi: \makecontributiontitle e \makecontributiontitlenota, il secondo si differenzia dal primo semplicemente per l’asterisco dopo il titolo; ho definito il comando \notainiziale che stampa il contenuto facendolo precedere da un esponente con l’asterisco.

          Ho quindi ciò che volevo: un comando che produce una nota con l’esponente asteriscato per fornire delle informazioni relative all’articolo (ad esempio: `Apparso in forma ridotta in…,’ oppure `Ringrazio….’).

          Vorrei avere un suggerimento per unire i due comandi \makecontributiontitle e \makecontributiontitlenota in uno solo che, a seconda della presenza del comando \notainiziale, inserisca o meno l’asterico dopo il titolo.

          Detto altrimenti: come si fa a definire un comando che si comporta in maniera differente a seconda della presenza di un altro comando?

          Grazie in anticipo!
          A presto,
          Matteo

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

      Go to top