[texhax] in-section references
martin f krafft
madduck at madduck.net
Wed Oct 3 14:45:28 CEST 2007
also sprach Donald Arseneau <asnd at triumf.ca> [2007.10.03.1304 +0100]:
> > If I do that, I just get a runaway argument error. But I can use
> > standard "printf" debugging with \typeout, read on...
>
> They have to work, wherever \typeout would work. The problem is
> \typeout doesn't report the real definition because it expands.
> You could do:
> \typeput{\meaning\curref; \meaning\refpart}
I assume you mean \typeout instead of \typeput, then this is what
I get now:
DEBUG: macro:->\protect \ref
{section:deb-term-maintainer}macro:->3\hbox {}mac
ro:->3.1\hbox {}macro:->3.1.0\hbox {}macro:->3.1.0.0\hbox {}
So I guess the \protect prevents the expansion? Is there a way I can
"unprotect" it in the \ifx statements?
> > #1 section
> > #2 3.1.1
>
> NO! #2 = \ref{some-term} !
Right.
> Try \protected at edef\curref{#2}, but I suspect that gives
> differences from the plain characters "3.1.1".
I tried that before and it makes no difference: with hyperref
loaded, it'll be \ref{...}, if I do not load hyperref, then it is
expanded and the whole thing works.
> > \newcommand{\rrefx}[3]{%
> > \protected at edef\curchapter{\thechapter\hbox{}}%
> > \protected at edef\cursection{\thesection\hbox{}}%
> > \protected at edef\cursubsection{\thesubsection\hbox{}}%
> > \protected at edef\cursubsubsection{\thesubsubsection\hbox{}}%
> > \protected at edef\curref{#2}%
> > \def\refsame{#3}%
> > \def\refother{#1~#2}%
>
> \show\curref
> \show\cursubsection
\def\refother{#1~#2}%
\show\curref
\show\thesubsection
\typeout {DEBUG: \meaning\curref \meaning\curchapter \meaning\cursecti...
yields a compilation error:
! Argument of \show has an extra }.
<inserted text>
\par
> > so the \ref is substituted later, which breaks my approach.
>
> Try \edef\curref{#2}, which will expand \ref, but I suspect it
> will give an error in expansion.
Yes:
! Use of \@rule doesn't match its definition.
\@ifnextchar ... \reserved at d =#1\def \reserved at a {
#2}\def \reserved at b {#3}\f...
> > Am I missing something?
>
> Probably you are missing a pre-existing package like "smartref".
Ah, I shall try that. However, what is a bit sad is:
Note that the references create by smartref and byname are *not*
hyperlink, when hyperref is active. Maybe in the future ...
Thanks for your input. Maybe I can get my simple approach working
somehow, and I'd appreciate any hints.
--
martin; (greetings from the heart of the sun.)
\____ echo mailto: !#^."<*>"|tr "<*> mailto:" net at madduck
i must confess, I was born at a very early age.
-- groucho marx
spamtraps: madduck.bogus at madduck.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature (see http://martin-krafft.net/gpg/)
Url : http://tug.org/pipermail/texhax/attachments/20071003/62328b61/attachment.bin
More information about the texhax
mailing list