Re: Soluzione euristica ai rimandi errati da sezioni stellate?

#28731
Up
0
Down
::

Oggi, aggiornando hyperref, pensavo di risolvere alcuni dei problemi
che questo pacchetto produce; tra questi problemi, quello più fastidioso
è senza dubbio la creazione di collegamenti a posizioni
*sbagliate* nel testo a partire dai link nell’output in PDF
(dall’indice analitico i collegamenti non riportano sulla riga
della parola collegata, dall’indice si finisce in posizioni strane
se si usano i sezionamenti stellati, nelle figure/tabelle, se non si
usa hypcap o si mette la caption *sopra* l’oggetto flottante, si finisce
a volte nella pagina successiva a quella corretta…)

Non essendo un texnico ma solo un utente curioso di LaTeX ho
cercato di risolvere almeno il problema dei collegamenti stellati
sbagliati. A furia di ricerche e tentativi ho provato a ridefinire
section (e subsection, …) usando del codice trovato in rete (e riportato
sotto). Con questa ridefinizione si ottengono collegamenti corretti, cioè:

se clicco nell’indice su

Sezione non numerata…. 10

Adobe Reader mi sposta sul titolo “Sezione non numerata” creato da

`
\section*{Sezione non numerata}
`

e non esattamente sotto di esso.

Il codice originale (essendo già troppo texnico per me) non è farina del
mio sacco ed essendomi solo limitato a modificarlo “a naso”,
non so perchè funziona nè tanto meno se produce danni collaterali…

`
%% Ridefinizione section e subsection per bypassare il problema
%% dei collegamenti stellati non funzionanti di hyperref

%% Ridefinizione section
\makeatletter
\def\section{\@ifstar\unnumberedsection\numberedsection}
\def\numberedsection{\@ifnextchar[%]
\numberedsectionwithtwoarguments\numberedsectionwithoneargument}
\def\unnumberedsection{\@ifnextchar[%]
\unnumberedsectionwithtwoarguments\unnumberedsectionwithoneargument}
\def\numberedsectionwithoneargument#1{\numberedsectionwithtwoarguments[#1]{#1}}
\def\unnumberedsectionwithoneargument#1{\unnumberedsectionwithtwoarguments[#1]{#1}}
\def\numberedsectionwithtwoarguments[#1]#2{%
\ifhmode\par\fi
\removelastskip
\vskip 3ex\goodbreak
\refstepcounter{section}%
\noindent
\begingroup
\leavevmode\scriptsize\bfseries\raggedright
%\llap{\thesection\quad}%
\llap{\quad}%
#2
\par
\endgroup
\vskip 2ex\nobreak
\addcontentsline{toc}{section}{%
% \protect\numberline{\thesection}%
#1}%
}
\def\unnumberedsectionwithtwoarguments[#1]#2{%
\ifhmode\par\fi
\removelastskip
\vskip 3ex\goodbreak
% \refstepcounter{section}%
\noindent
\begingroup
\leavevmode\scriptsize\bfseries\raggedright
\leavevmode\scriptsize\bfseries\raggedright
% \thesection\quad
#2
\par
\endgroup
\vskip 2ex\nobreak
\addcontentsline{toc}{section}{%
% \protect\numberline{\thesection}%
#1}%
}
\makeatother

`

Non mi risulta che questo codice riesca a fare ciò che chiedi. A parte la bruttura tipografica di un titolo di sezione scritto in caratteri più piccoli del corpo del documento, non c’è nulla che faccia pensare che hyperref possa trovare i titoli delle sezioni non numerate.

Puoi, per favore, mostrare un pezzo di codice che funzioni?

Quel codice, sappilo, fa abbastanza orrore. Se vuoi sezioni numerate, perché mai non componi il numero, per esempio?

Ciao
Enrico

Go to top