Re: patchcmd e spazi spuri

#65331
Up
0
Down
::

antonio.macrì” post=64355Stavo cercando di definire un comando che mi consenta di riferirmi alle etichette usando numeri ordinali, anziché i cardinali. Ho pensato di “patchare” i comandi definiti da hyperref:
`
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[italian]{babel}
\usepackage{etoolbox}
\usepackage[colorlinks,linkcolor=blue]{hyperref}
\usepackage{itnumpar}

\makeatletter
\def\@ordref#1#2{%
\begingroup
$\rightarrow$\patchcmd{\T@ref}{\@firstoffive}{{\expandafter#1\@firstoffive}}\relax\relax$\leftarrow$%
\ref{#2}%
\endgroup}
\newcommand\ordreff{%
\@ordref\printordinalef}
\newcommand\ordrefm{%
\@ordref\printordinalem}
\makeatletter

\begin{document}
\section{Primo paragrafo}
\label{cap:primo}
\centering

\fboxsep=0pt
\fbox{\ordreff{cap:primo}} \quad \fbox{\ordrefm{cap:primo}}
\end{document}`

Il problema è che vengono inseriti degli spazi spuri:

Il comando \T@ref è definito in questo modo:
`
\def\T@ref#1{%
\Hy@safe@activestrue
\expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}%
\Hy@safe@activesfalse
}%`

A chi sono dovuti gli spazi spuri? Come si risolve?
Esiste un modo migliore per fare quello che sto cercando di fare?

Non mi pare una buona idea quella di eseguire \patchcmd a ogni esecuzione. E poi
`{\expandafter#1\@firstoffive}`
non ha molto senso.

Carica refcount e definisci
`\def\@ordref#1#2{#1{\getrefnumber{#2}}}`
Ciao
Enrico

Go to top