- Questo topic ha 4 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 5 mesi fa da .
-
Topic
-
Ciao a tutti! Vi sottopongo un problema misterioso (per me).Si assuma di caricare suftesi con le opzioni sctitles e authortitle
e di voler ridefinire il comando \title in modo che abbia due argomenti:
il primo (opzionale) per il titolo che va nelle testatine; il secondo per il titolo usato dal comando \maketitle.
Il tentativo è nel codice qui sotto. Fin qui non ci sono problemi. (A parte il fatto che ho più qualche sospetto
sulla correttezza del codice che ho usato.)`
% !TEX encoding = UTF-8 Unicode
\documentclass[sctitles,authortitle]{suftesi}\makeatletter
% \def\suf@rightmark{{\@headtitle}}
\renewcommand{\title}[2][\@title]{\gdef\@title{#2}\gdef\@headtitle{#1}}
\def\@headtitle{–missing title–
\protect\ClassWarningNoLine{suftesi}{No \noexpand\title given}
}\makeatother
%\title[Titolo corto]{Titolo lungo}
\begin{document}
%\maketitleCiao mondo!
\end{document}
`Nel caso non venga dichiarato il titolo con uno dei due comandi:
` \title{Titolo}
\title[Titolo corto]{Titolo lungo} `
deve essere emesso un warning o un errore. E qui nascono i problemi.
Il codice qui sopra gira, però noterete che il testo dichiarato nel warning perde le maiuscole e lo spazio dopo \title. Ciò è dovuto al fatto che \@headtitle compare nella definizione:
`
\def\suf@rightmark{\suftesi@smallcaps{\@headtitle}}
`
ovvero all’interno di un comando (\suftesi@smallcaps) che usa al suo interno \MakeTextLowercase, che è il responsabile dell’effetto indesiderato. Notate che \ClassWarningNoLine ha bisogno di \protect per funzionare, sempre per lo stesso motivo.C’è un modo per ottenere qualcosa di decente?
Spero proprio che si possa fare senza rivoluzionare la classe 🙁Ciao
Ivan
- Devi essere connesso per rispondere a questo topic.