footnote et thmbox

35 views
Skip to first unread message

Christophe Jorssen

unread,
Jun 1, 2006, 2:50:40 PM6/1/06
to
Bonjour,

J'essaye de contourner une petite difficulté : impossible d'avoir des
footnotes à l'intérieur de l'environnement thmbox du package du même
nom.

J'essaye la solution suivante, mais elle n'est pas robuste, dès que
j'ai quelque chose qui ne doit pas être "expandé" dans l'argument de
footnote (par exemple \footnote{\textbf{Marchera pas}})

Une idée ?

Merci d'avance

\documentclass{article}

\usepackage{thmbox}

\makeatletter

\newtoks\EJ@toks

\newenvironment{Thmbox}{%
\let\Old@footnote\footnote
\EJ@toks={}%
\def\EJ@tempa{}%
\def\footnote##1{%
\footnotemark%
\EJ@toks\expandafter{\EJ@tempa}%
\xdef\EJ@tempa{%
\the\EJ@toks
\noexpand\footnotetext[\thefootnote]{##1}}}\begin{thmbox}}
{\end{thmbox}\EJ@tempa\let\footnote\Old@footnote}


\begin{document}

\begin{Thmbox}{Essai}
Coucou\footnote{Essai} Coucou\footnote{Essai}
\end{Thmbox}

\end{document}

--
Christophe


Jean-Côme Charpentier

unread,
Jun 1, 2006, 3:55:09 PM6/1/06
to
Christophe Jorssen a écrit :

> Bonjour,
>
> J'essaye de contourner une petite difficulté : impossible d'avoir des
> footnotes à l'intérieur de l'environnement thmbox du package du même nom.
>
> J'essaye la solution suivante, mais elle n'est pas robuste, dès que j'ai
> quelque chose qui ne doit pas être "expandé" dans l'argument de footnote
> (par exemple \footnote{\textbf{Marchera pas}})
>
> Une idée ?
>
> Merci d'avance
>
> \documentclass{article}
>
> \usepackage{thmbox}
>
> \makeatletter
>
> \newtoks\EJ@toks
>
> \newenvironment{Thmbox}{%
> \let\Old@footnote\footnote
> \EJ@toks={}%
> \def\EJ@tempa{}%
> [...]

Pourquoi ne pas rester uniquement avec des registres d'unités
lexicales ? Ils sont plus ou moins faits pour. Donc exit le \EJ@tempa et
on ne travaille qu'avec \EJ@toks :

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{thmbox}
\usepackage[frenchb]{babel}

\makeatletter

\newtoks\EJ@toks

\newenvironment{Thmbox}{%
\let\Old@footnote\footnote
\EJ@toks={}%

\def\footnote##1{%
\footnotemark
\global\EJ@toks=\expandafter{%
\the\EJ@toks
\footnotetext[\thefootnote]{##1}}}%
\begin{thmbox}
}
{%
\end{thmbox}
\the\EJ@toks
\let\footnote\Old@footnote
}


\begin{document}

\begin{Thmbox}{Fermat}
L'équation $x^n+y^n=z^n$\footnote{Dans $\mathbf{N}$.}
n'a pas de solutions triviales pour $n>2$\footnote{La marge est
toujours \textbf{beaucoup} trop petite pour contenir la
preuve.}\footnote{Ça va pas de faire des notes \emph{après} une
formule mathématique ?}
\end{Thmbox}

\end{document}

Jean-Côme Charpentier

--
J'ai pas besoin d'attendre vendredi pour être de mauvaise foi ;)
-+- Denis in fr.comp.text.tex -+-

Christophe Jorssen

unread,
Jun 1, 2006, 3:58:56 PM6/1/06
to
Merci Jean-Côme, mais ça ne fonctionne pas exactement comme je
voudrais.

> Christophe Jorssen a écrit :
>> Bonjour,
>>
>> J'essaye de contourner une petite difficulté : impossible d'avoir des
>> footnotes à l'intérieur de l'environnement thmbox du package du même nom.
>>
>> J'essaye la solution suivante, mais elle n'est pas robuste, dès que j'ai
>> quelque chose qui ne doit pas être "expandé" dans l'argument de footnote
>> (par exemple \footnote{\textbf{Marchera pas}})
>>
>> Une idée ?
>>
>> Merci d'avance
>>
>> \documentclass{article}
>>
>> \usepackage{thmbox}
>>
>> \makeatletter
>>
>> \newtoks\EJ@toks
>>
>> \newenvironment{Thmbox}{%
>> \let\Old@footnote\footnote
>> \EJ@toks={}%
>> \def\EJ@tempa{}%
>> [...]
>
> Pourquoi ne pas rester uniquement avec des registres d'unités lexicales ?

A cause du fait qu'il faut que \thefootnote soit expandé pour avoir une
numérotation correcte.

> Ils sont plus ou moins faits pour. Donc exit le \EJ@tempa et on ne travaille
> qu'avec \EJ@toks :

--
Christophe


Jean-Côme Charpentier

unread,
Jun 1, 2006, 4:58:10 PM6/1/06
to
Christophe Jorssen a écrit :

> Merci Jean-Côme, mais ça ne fonctionne pas exactement comme je voudrais.

Je viens de voir :-)

>>> [...]


>>> \newenvironment{Thmbox}{%
>>> \let\Old@footnote\footnote
>>> \EJ@toks={}%
>>> \def\EJ@tempa{}%
>>> [...]
>>
>>
>> Pourquoi ne pas rester uniquement avec des registres d'unités
>> lexicales ?
>
>
> A cause du fait qu'il faut que \thefootnote soit expandé pour avoir une
> numérotation correcte.

Rhââ oui ! Zut !
Il faut quand même prendre le problème par le bon bout. Si on
développe, ça fait couiner TeX sur certaines commandes et si on ne
développe pas, cet imbécile de \thefootnote reste égal à lui-même
(évidemment puisqu'on ne développe justement pas.
Je garde l'option, je ne développe pas mais je feinte dans l'autre
sens en n'utilisant pas \thefootnote de façon directe. C'est un peu plus
chaud parce qu'il faut sauvegarder la valeur du compteur footnote que
\footnotemark va faire bouger avant qu'on en arrive aux \footnotetext.
D'où mon deuxième essai :

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{thmbox}
\usepackage[frenchb]{babel}

\makeatletter

\newtoks\EJ@toks
\newcommand\insidethm{\thefootnote\stepcounter{footnote}}
\newcounter{savefootnote}


\newenvironment{Thmbox}{%
\let\Old@footnote\footnote

\setcounter{savefootnote}{\value{footnote}}%


\EJ@toks={}%
\def\footnote##1{%
\footnotemark
\global\EJ@toks=\expandafter{%
\the\EJ@toks

\footnotetext[\insidethm]{##1}}}%


\begin{thmbox}
}
{%
\end{thmbox}

\setcounter{footnote}{\value{savefootnote}}%


\the\EJ@toks
\let\footnote\Old@footnote
}


\begin{document}
Un petit texte avant\footnote{Avec sa note.}.

\begin{Thmbox}{Fermat}
L'équation $x^n+y^n=z^n$\footnote{Dans $\mathbf{N}$.}

n'a pas de solutions non triviales pour $n>2$\footnote{La marge est


toujours \textbf{beaucoup} trop petite pour contenir la
preuve.}\footnote{Ça va pas de faire des notes \emph{après} une
formule mathématique ?}
\end{Thmbox}

Un petit texte après\footnote{Toujours avec sa note.}.

\end{document}

Allez ! On va finir par converger vers une solution acceptable.

Jean-Côme Charpentier

--
Que cela vous plaise, c'est plutôt une bonne nouvelle, mais que vous
affirmiez que c'est parfait, je trouve que l'on pousse un peu :-)
Personnellement, je dirais plutôt que c'est une horreur.
-+- Jean-Côme in fr.comp.text.tex -+-

Christophe Jorssen

unread,
Jun 1, 2006, 5:03:10 PM6/1/06
to
>
> Allez ! On va finir par converger vers une solution acceptable.
>

Ca me va très bien :-)

Merci

--
Christophe


Josselin Noirel

unread,
Jun 2, 2006, 4:48:00 AM6/2/06
to
Jean-Côme Charpentier
wrote in message <447f54e2$0$3191$ba4a...@news.orange.fr>:
> \EJ@toks={}%
> [...]
> \global\EJ@toks=\expandafter{%

Tu as intérêt à mettre un \global avant la première affectation.

--
Joss

Jean-Côme Charpentier

unread,
Jun 2, 2006, 8:12:07 AM6/2/06
to
Josselin Noirel a écrit :

Oups ! Oui ! D'habitude c'est un réflexe : tout en local ou tout en
global, je ne mélange pas les genres... sauf quand j'oublie.
Je suis du genre diesel, à 22h 58, je ne suis pas encore pleinement
opérationnel (et à 21h 55, je sors des limbes).

Jean-Côme Charpentier

--
Le manque de pratique met en péril ta sagacité. Tu reviens quand petit
scarabée ?

Reply all
Reply to author
Forward
0 new messages