- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 4 mesi fa da .
-
Topic
-
Si provi a compilare il seguente:
`% !TEX TS-program = XeLaTeX
\documentclass{suftesi}\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{Junicode}\begin{document}
\tableofcontents
\chapter{Primo}
\section{uno}
\section{due}
\section{tre}
\section{quattro}
\section{cinque}
\section{uno}
\section{due}
\section{tre}
\section{quattro}
\section{cinque}\end{document}
`Come si può notare i titoli di sezione non sono allineati. Ciò dipende sia dai numeri (che non sono a larghezza fissa) sia da come sono definiti i vari livelli dell’indice dalla classe suftesi. Fermiamoci per il momento alle sole sezioni. Sono così definite:
`
\titlecontents{section}
[1.5em]
{}
{\thecontentslabel\hspace*{1em}}
{}
{\ifsuftesi@article\suftesi@chaptitlerule%
\else\suftesi@titlerule\fi\contentspage}
`Una soluzione è sostituire \thecontentslabel
con \rlap{\thecontentslabel}\hspace*{1.5em}, ma ciò comporterebbe alcune conseguenze indesiderate. Per esempio, sezioni molto ingombranti (es: 10.12.13) potrebbero sovrapporsi al titolo. (Lo so, è una situazione rara, ma possibile.) È questo il motivo per cui ho scelto di usare \thecontensline.L’idea è di definire dei comandi:
`
\newcommand{\suftesi@chaptertoclabel}{\thecontenslabel}
\newcommand{\suftesi@sectiontoclabel}{\thecontenslabel}
`da usare al posto di \thecontenslabel e da ridefinire quando serve, per esempio con un comando ad hoc, come:
`
\newcommand{\adjustsectoclabel}[1]{%
\renewcommand{\suftesi@sectiontoclabel}{\rlap{\thecontenslabel}\hspace*{#1}}}
`da usare così:
`
\adjustsectoclabel{1.5em}
`L’approccio funziona, ma è evidentemente molto ingombrante, perché andrebbe definito un comando per ogni ridefinizione:
`
\newcommand{\adjustchaptoclabel}[1]…
\newcommand{\adjustsectoclabel}[1]…
`Sarebbe bello poter avere un solo comando con due argomenti:
`
\adjusttoclabel{section}{2em}
`
che permetta di ridefinire`
\suftesi@sectiontoclabel
`
con
`
\rlap{\thecontenslabel}\hspace*{#1}
`Ho fatto diversi tentativi, sfiorando la soluzione, ma evidentemente qualcosa mi sfugge.
Qualcuno sa come risolvere il problema in una maniera elegante?
Ciao
Ivan
- Devi essere connesso per rispondere a questo topic.