Custom labels in Sapthesis

  • Creatore
    Topic
  • #121078
    Up
    0
    Down
    ::


    Buongiorno a tutt*!
    Uso da poco LaTeX (o meglio, l’ho riaperto dopo anni :roll:), quindi chiedo in anticipo scusa per eventuali mancanze ed ingenuità, ma sono incappata in un problema molto specifico per il quale ho provato a documentarmi ma non riesco a risolvere in alcun modo.

    In pratica sto scrivendo la mia tesi con Sapthesis, e non riesco a personalizzare le etichette della front page “Relatore” e “Correlatore” (per farvi capire vorrei figurassero come “Relatrice interna” e “Relatrice esterna”).

    Nella documentazione fornita per Sapthesis.cls sono indicati i comandi (vedere prossima immagine) ma quando compilo mi danno errore.

    Vi riporto qui sotto: info generali, testo del mio preambolo e dell’errore, e testo del file Sapthesis.cls nella sezione riguardante queste etichette.

    Info generali
    Software: MikTeX (versione 22.3)
    Compilatore: TeXworks
    Commands: PdfLaTeX+MakeIndex+BibTeX
    Document class: Sapthesis (versione 5.0)

    Preambolo
    `\documentclass[oneside, a4paper]{sapthesis}
    \usepackage[italian]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage{hyperref}
    \usepackage{setspace}`

    Errore
    `!LaTeX Error: Command \SAP@ThesisAdvisorLabel already defined.
    Or name \end… illegal, see p.192 of the manual.`

    Dal file Sapthesis.cls: comandi per l’etichetta “Advisor”
    `%% Advisors
    \newcount\SAP@advisorcount
    \newtoks\SAP@advisortoks
    \newcommand{\advisor}[1]{%
    \ifnum\SAP@advisorcount=\z@
    \SAP@advisortoks={#1}%
    \else
    \SAP@advisortoks=\expandafter{\the\SAP@advisortoks\\[1mm]#1}%
    \fi
    \advance\SAP@advisorcount\@ne}

    \newcommand{\customadvisorlabel}[1]{%
    \newcommand{\SAP@ThesisAdvisorLabel}{#1}
    \newcommand{\SAP@ThesisAdvisorsLabel}{#1}}`

    Temo che molto banalmente io non stia riuscendo a scrivere bene il comando (?), oltre al semplice \customadvisorlabel come indicato dalla documentazione ho provato a fare altri tentativi ma niente, spero possiate illuminarmi.

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #121079
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Cara @Giuls, come vedi nell’epilogo di questa mia risposta sarebbe meglio inviare un esempio minimo compilabile (EMC) che replichi il problema che non riesci a risolvere da sola.

        Cercando di aiutarti, tiro ad indovinare.

        Prova a spostare all’indietro i comandi \customadvisorlabel e \customcoadvisorlabel, prima di comporre il frontespizio; In sostanza metti quei comandi nel preambolo, e il codice per il frontespizio sicuramente lo metti dopo \begin{document}.

        Se questo suggerimento non ti dà i risultati sperati, vuol dire che le mie capacità di tirare a indovinare non funzionano bene; allora predisponi un EMC come leggi in rosso qui sotto e invia solo il codice sorgente. Accertati che il tuo piccolo EMC replichi davvero il tuo problema.

      • #121080
        Up
        0
        Down
        ::


        Il suggerimento specifico non ha funzionato, ma mi ha condotto in qualche modo a cambiare le etichette originali ancor più indietro, cioè direttamente dal file .cls, scavalcando il problema di modificarle con un comando, e ho risolto così!

        Grazie mille per la risposta 🙂 💡

      • #121081
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::



          @Giuls
          , lo sa che è proibito modificare i file scritti da altri?
          Devi leggere la documentazione e vedere a quale licenza il file è sottoposto; il file sapthesis.cls è vincolato dalla LaTeX Project Public Licence che consente di fare modifiche ad un clone del file originale a cui sia stato cambiato il nome; Deve essere mantenuto il nome dell’autore originale come detentore del Copyright, e deve essere sostituito il nome del manutentore con quello di colui che ha eseguito le modifiche.

          Questo e proprio il minimo di vincoli per il software libero come quello del sistema TeX, che sia distribuito come MiKTeX o TeX Live, non ha importanza.

          Nella pagina 12 c’è un esempio in cui viene predisposto un modellino dei una tesi di specializzazione e viene usato \customdirectorlabel, che si comporta come \custonauthorlabel, \customadvisorlabel, \customcoadvisorname. Questi comandi sono usati nel preambolo e dopo \begin{document} viene eseguito \maketitele che compone frontespizio e retro-frontespizio.

          Quindi non c’è nessun bisogno di modificare la classe.

          Se fosse necessario, invece di modificare la classe (operazione proibita) o creare un clone con nome diverso, si può copiare il codice originale nel proprio preambolo e modificare solo questa copia nel proprio preambolo; non si viola nessuna licenza.

          Vale sempre la pena di leggere la documentazione fino in fondo.

          Informazione preziosa; quando Francesco Biccari creava quella classe sapthesis.cls, era llaureando o dottorando alla Sapienza; ha manutenuto e aggiornato la classe e la documentazione fino alla recente versione 5.0 che è datata 2022/01/01, quindi recentissima. Da allora l’autore è diventato docente all’università di Firenze e per il GuIT è i direttore della rivista ArsTeXnica di questo gruppo. Modificare un file di una pesona così, mi sembra un po’ eccessivo, anche se le necessità di comporre la tesi in fretta inducono a queste violazioni deontologiche (giusto er usare un parolone 😀 ).

        • #121082
          Up
          0
          Down
          ::


          Certo, avevo clonato e rinominato il file, anche se non sapevo dell’obbligo di esplicitare il manutentore!
          E chiaramente avevo già messo alla prova il modellino a pagina 12 (fin lì ci arrivo XD), ma niente, e sì sto usando proprio l’ultima versione ed è tutto al posto giusto tra preambolo eccetera.
          Ma l’opzione di cambiare nel preambolo il codice originale mi sembra la più opportuna, cercherò di lavorarci.

          Grazie ancora!

        • #121083
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Ti allego ciò che ho fatto io, tanto per provare. Però conto di informare l’autore del problema.`% !TeX program = pdflatex
            % !TeX spellcheck = it_IT
            \documentclass[binding=0.6cm]{sapthesis}
            \usepackage{microtype} \usepackage[italian]{babel}
            %\usepackage[utf8]{inputenc}% non più necessario!
            \usepackage{hyperref}
            \hypersetup{pdftitle={La mia tesi},pdfauthor={Paolino Paaperino}}
            \title{La mia tesi} \author{Paolino Paperino}
            \IDnumber{123456}
            \course{Laurea Magistrale in Fisica}
            \courseorganizer{Facoltà di Scienze Matematiche, Fisiche e Naturali} \AcademicYear{2021/2022}
            \advisor{Prof. Nonna Papera}
            \coadvisor{Zia Paperina} \authoremail{paolino.paperino@pippo.com}
            \copyyear{2022}
            \thesistype{Tesi di Laurea Magistrale}

            \makeatletter
            \AtBeginDocument{
            \renewcommand{\customadvisorlabel}[1]{%
            \renewcommand{\SAP@ThesisAdvisorLabel}{#1}
            \renewcommand{\SAP@ThesisAdvisorsLabel}{#1}}

            \renewcommand{\customcoadvisorlabel}[1]{%
            \renewcommand{\SAP@ThesisCoAdvisorLabel}{#1}
            \renewcommand{\SAP@ThesisCoAdvisorsLabel}{#1}}
            }
            \makeatother

            \begin{document}
            \customadvisorlabel{Relatrice interna}
            \customcoadvisorlabel{Relatrice esterna}
            \frontmatter
            \maketitle
            \dedication{Dedicato a\\ Donald Knuth}
            \begin{abstract}
            Questa tesi parla di me. \end{abstract}
            \tableofcontents
            \mainmatter
            \chapter{Introduzione} …
            \backmatter
            \cleardoublepage
            \phantomsection % Give this command only if hyperref is loaded
            \addcontentsline{toc}{chapter}{\bibname}
            % Here put the code for the bibliography. You can use BibTeX or
            % the BibLaTeX package or the simple environment thebibliography.
            \end{document}`Prova questo esempio minimocompilabile; che contiene alcune cose che normalmente sono descritte come sporchi trucchi; in realtà si tratta di comandi descritti nel manuale originale di Leslie Lamport, il papà dli LaTeX, ma usati raramente.. Se hai domande, chiedi.

          • #121084
            Up
            0
            Down
            ::


            Cara Giuls, Caro OldClaudio,

            innanzitutto grazie per la pazienza, ero fuori l’Italia per lavoro.

            Grazie a Giuls per aver scoperto un bug di Sapthesis e a Claudio per aver trovato una soluzione, sempre in maniera velocissima!

            Ho appena aggiornato Sapthesis (versione 5.1). Da domani sarà su CTAN ed entro la fine della settimana dovrebbe essere disponibile nelle varie distribuzioni, in particolare MiKTeX.


            @Giuls
            , se il problema dovesse persistere, non esitare a scrivermi direttamente alla mail che trovi nel manuale di sapthesis.

            A presto e di nuovo grazie a tutti!

            Ciao ciao.
            Fra

          • #121085
            Up
            0
            Down
            ::


            Uh perfetto, grazie mille ad entrambi per l’aiuto!

          • #121086
            Up
            0
            Down
            ::


            Cara Giuls,

            hai provato ad aggiornare la tua distribuzione e controllare se con la nuova versione di Sapthesis il problema è sparito?

            Grazie!

          • #121087
            Up
            0
            Down
            ::


            Eccomi, ho appena scaricato la 5.1 ed entrambi i comandi funzionano bene!

            Grazie ancora @francesco.biccari! 8)

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

        Go to top