Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/04/2010, à 20:42

Sir Na Kraïou

[résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Bonjour à tous,
question un peu compliquée à expliquer, n'hésitez pas à me redemander si je ne suis pas claire.

Je voulais savoir s'il existe un équivalent à ça :

\usepackage[para]{manyfoot}
\DeclareNewFootnote{A}
\renewcommand{\thefootnoteA}{\alph{footnoteA}}

Mais pour les endnotes ?

En gros, je sais faire plusieurs types de footnote (après, on utilise les balises \footnoteA et \footnotemarkA \footnotetextA), mais j'aurais besoin de la même choses avec endnote, de façon à avoir des balises de types \endnoteA, \endnotemarkA, \endnotetextA, et \theendnotesA (j'ai absolument besoin de ces quatre fonctions)).

Le but final est d'avoir différents types de endnotes (endnoteA, endnoteB, etc. etc.) dont les \theendnotes respectifs pourront être placés à différents endroits du corps du texte. Ce serait parfait si chaque type de endnote avait son décompte (¹,²,³...) indépendant (en gros la première endnoteA donne un ¹, la première endoteB donne aussi un ¹).

Dernière modification par Р☢w ! ✰ :mad: ✰ (эй !) (Le 18/04/2010, à 22:30)


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#2 Le 17/04/2010, à 08:11

playmobill

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Désolé, ça dépasse à nouveau mes compétences en la matière. Je pense que l'achat du LaTeX Companion commence à devenir utile pour toi.


Passer à Linux n’est pas un défi, c’est juste un choix.

Hors ligne

#3 Le 17/04/2010, à 10:38

gl38

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Je n'ai pas trouvé de package qui ferait ce que tu souhaites.
Une piste est de le faire soi-même, en copiant le fichier manyfoot.sty  en
manyend.sty et nccfoots en nccends.sty par exemple (ça se passe dans /usr/share/texmf-texlive/tex/latex/ncctools)
et en remplaçant les occurrences de footnote par endnote et l'appel à nccfoots par nccends.

Cordialement,
Guy

Hors ligne

#4 Le 17/04/2010, à 10:41

Sir Na Kraïou

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Bonjour,
Merci pour les réponses ! smile Je vais essayer ça ce soir, et si ça marche pas, j'irai demander sur fr.comp.text.tex.

Par contre, avec cette solution, je vais perdre la balise \theendnotes ?

Dernière modification par Р☢w ! ✰ :mad: ✰ (эй !) (Le 17/04/2010, à 10:42)


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#5 Le 17/04/2010, à 16:05

gl38

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

J'ai essayé : ça ne marche pas aussi naïvement !

Cordialement,
Guy

Hors ligne

#6 Le 18/04/2010, à 08:33

gl38

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Ma première idée n'était pas si bête : c'est comme ça que le package endnotes a été fabriqué à partir du code qui fait les footnotes.
Une solution consiste à copier le fichier endnotes.sty chez soi en endnotesB.sty.
Dans le fichier endnotesB.sty on met des B un peu partout pour que les macros des 2 listes de endnotes ne se mélangent pas.
Si on veut une troisième liste, il n'y a qu'à mettre des C à la place des B...

Voici mon endnotesB.sty, j'ai mis un peu trop de B, on doit pouvoir nettoyer...

\@definecounter{endnoteB}
\def\theenBdnoteB{\@arabic\c@endnoteB}

\def\@makeenBmark{\hbox{\@textsuperscript{\normalfont\@theenBmark}}}
\def\makeenBmark{\@makeenBmark}

\def\theenBmark{\@theenBmark}

\newdimen\endnoteBsep

\def\endnoteB{\@ifnextchar[\@xendnoteB{\stepcounter{endnoteB}%
     \protected@xdef\@theenBmark{\theenBdnoteB}%
     \@endnoteBmark\@endnoteBtext}}

\def\@xendnoteB[#1]{%
   \begingroup
     \c@endnoteB=#1\relax
     \unrestored@protected@xdef\@theenBmark{\theenBdnoteB}%
   \endgroup
   \@endnoteBmark\@endnoteBtext}

%  Here begins a section of endnoteB code that's really different from
% the footnote code of LaTeX.

\let\@doanenoteB=0
\let\@endanenoteB=0

\newwrite\@enotesB
\newif\if@enotesBopen \global\@enotesBopenfalse

\def\@openenotesB{\immediate\openout\@enotesB=\jobname.enB\relax
      \global\@enotesBopentrue}


\long\def\@endnoteBtext#1{%
     \if@enotesBopen \else \@openenotesB \fi
     \immediate\write\@enotesB{\@doanenoteB{\@theenBmark}}%
     \begingroup
        \def\next{#1}%
        \newlinechar='40
        \immediate\write\@enotesB{\meaning\next}%
     \endgroup
     \immediate\write\@enotesB{\@endanenoteB}}

% \addtoendnoteBs works the way the other endnoteB macros probably should
% have, requiring the use of \protect for fragile commands.

\long\def\addtoendnoteBs#1{%
     \if@enotesBopen \else \@openenotesB \fi
     \begingroup
        \newlinechar='40
        \let\protect\string
        \immediate\write\@enotesB{#1}%
     \endgroup}

%  End of unique endnoteB code

\def\endnoteBmark{%
   \@ifnextchar[\@xendnoteBmark
     {\stepcounter{endnoteB}%
      \protected@xdef\@theenBmark{\theenBdnoteB}%
      \@endnoteBmark}}

\def\@xendnoteBmark[#1]{%
   \begingroup
      \c@endnoteB #1\relax
      \unrestored@protected@xdef\@theenBmark{\theenBdnoteB}%
   \endgroup
   \@endnoteBmark}

\def\@endnoteBmark{%
  \leavevmode
  \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
  \makeenBmark
  \ifhmode\spacefactor\@x@sf\fi
  \relax}

\def\endnoteBtext{%
     \@ifnextchar [\@xendnoteBnext
       {\protected@xdef\@theenBmark{\theenBdnoteB}%
    \@endnoteBtext}}

\def\@xendnoteBnext[#1]{\begingroup \c@endnoteB=#1\relax
   \xdef\@theenBmark{\theenBdnoteB}\endgroup \@endnoteBtext}

\def\@xendnoteBnext[#1]{%
  \begingroup
     \c@endnoteB=#1\relax
     \unrestored@protected@xdef\@theenBmark{\theenBdnoteB}%
  \endgroup
  \@endnoteBtext}



\def\notesBname{Notes B}%
\def\enoteBheading{\section*{\notesBname
  \@mkboth{\MakeUppercase{\notesBname}}{\MakeUppercase{\notesBname}}}%
  \mbox{}\par\vskip-\baselineskip}

\def\enoteBformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em
  \leavevmode\llap{\makeenBmark}}

\def\enotesBize{\footnotesize}

\def\theenBdnoteBs{\immediate\closeout\@enotesB \global\@enotesBopenfalse
  \begingroup
    \makeatletter
  \edef\@tempa{`\string >}%
    \ifnum\catcode\@tempa=12%
      \let\@ResetGT\relax
    \else
      \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
      \@makeother\>%
    \fi
    \def\@doanenoteB##1##2>{\def\@theenBmark{##1}\par\begingroup
        \@ResetGT
        \edef\@currentlabel{\csname p@endnoteB\endcsname\@theenBmark}%
        \enoteBformat}
    \def\@endanenoteB{\par\endgroup}%
    \enoteBheading
    \enotesBize
    \input{\jobname.enB}%
  \endgroup}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Alors on essaie :

\documentclass{article}
\usepackage{endnotes}
\usepackage{endnotesB}

\begin{document}
Finally, we explain\endnote{This is the first A-level
endnote.} on the previous example\endnoteB{This is the first
B-level endnote.} how to automate\endnote{The second
A-endnote.} enumeration of the additional\endnoteB{The second
B-endnote.} endnote\endnote{The third A-endnote.}
levels\endnoteB{The third very very very very very very very
very very long B-endnote.}

\theendnotes
\vskip 1cm
\hrule

\theenBdnoteBs
\end{document}

et ça a l'air de faire ce que tu veux.
Cordialement,
Guy

[Edit] je modifie le code de endnotesB.sty en remplaçant endnoteformat par endnoteBformat.

Dernière modification par gl38 (Le 19/04/2010, à 06:56)

Hors ligne

#7 Le 18/04/2010, à 12:26

Sir Na Kraïou

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Yeah, super ! Je teste ça ce soir sur un gros document compliqué et je te tiens au courant !

Vraiment, merci, merci beaucoup !


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#8 Le 18/04/2010, à 21:25

Sir Na Kraïou

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Re. J'ai testé, le problème est que ça décale les autres notes.

Genre :

Finally, we explain¹ on the previous example¹ how to automate² enumeration
of the additional² endnote³ levels³
Notes
   ³ This  is the first A-level endnote.
   ³ The  second A-endnote.
   ³ The third A-endnote.
______________
Notes B
   ¹ This  is the first B-level endnote.
   ² The  second B-endnote.
   ³ The third very very very very very very very very very long B-endnote.

Si je rajoute des endnotes C, ça foire les endnotes et les endnotes B.


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#9 Le 18/04/2010, à 22:30

Sir Na Kraïou

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Okay. Alors j'ai résolu mon problème, de façon un peu stupide.

Je me suis rendue compte que dans mon document, les différents types de endnotes ne s'entremêlent pas, et que dans les faits, je peux me démerder assez salement avec les balises \addtoendnotes (qui permet d'ajouter du texte au milieu de \theendnotes) et \setcounter{endnote}{0} (qui remet les compteurs de endnote à 0 à l'endroit où on le place). Ça va être un joli bazar, mais si je commente bien, je devrais pouvoir m'y retrouver dedans.

Mais merci beaucoup pour l'aide quand même ! big_smile


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#10 Le 19/04/2010, à 06:52

gl38

Re : [résolu] LaTeX, gestion fine (compliquée ?) des endnotes.

Grr !
J'ai oublié deux B dans le endnotesB.sty
il faut remplacer enoteformat par enoteBformat
et les numéros des notes B ne polluent pas ceux de la série précédente.
Cordialement,
Guy

Dernière modification par gl38 (Le 19/04/2010, à 07:24)

Hors ligne