Bonjour à tous,
Dans une macro créée il y a un certain temps déjà par unbonpetit, je m'aperçois que le ne peux pas faire de note de bas de page : j'ai bien l'appel, mais point la note.
Ici la note peut se trouver soit dans l'argument 1 (didascalie accompagnant le nom du personnage), soit dans le nom du personnage lui-même (que l'on définit avec une commande spécifique, \definitacteur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 \newcommand*\pers[2][]{% \parskip = 0pt plus 0.3pt \ifx\ex@vspace\z@\if@acco\gdef\ex@vspace{2ex}\else\vspace{2ex}\fi\else\vspace{2ex}\fi \noindent \edef\tmp@cnt@footnote{\number\c@footnote}% \setbox\curr@box\hbox{\lowercase{\textsc{#2}}\ifx\@empty#1\@empty\else% \saveexpandmode\noexpandarg% \IfBeginWith{#1}{ }{\emph{#1}}{, \emph{#1}}% \restoreexpandmode\fi}% \ifdim\dimexpr(\linewidth-\wd\curr@box)/2\relax<\left@length\global\left@length\dimexpr(\linewidth-\wd\curr@box)/\tw@\relax\fi \ifdim\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box>\total@length\global\total@length\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box\fi \kern\dimexpr(\linewidth-\wd\curr@box)/2\relax \c@footnote\tmp@cnt@footnote\relax \@addvspacefalse\box\curr@box\par\nobreak }
C'est un problème qui avait déjà été rencontré et résolu ici pour une autre macro.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 \newcommand*\definitacteur[2][]{% \expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{% \ifx\@empty#1\@empty\pers[##1]{#2}% \else\pers[##1]{#1}% \fi}% }
Je peux poster un ECM, mais son préambule sera volumineux car beaucoup de macros dépendent les unes des autres En voici un :
Peut-être n'était-ce pas nécessaire ? En tout cas j'aimerais comprendre comment ça fonctionne pour faire "revenir" les notes comme dans l'exemple cité ci-dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110 \documentclass[a4paper, 12pt]{book} \usepackage[top=2cm, bottom=2cm, left=3cm, right=3cm]{geometry} \usepackage[frenchb]{babel} \usepackage[T1]{fontenc} \usepackage[latin9]{inputenc} \usepackage{calc} \usepackage{ifthen} \usepackage{fancyhdr} \usepackage{xstring} \makeatletter \newif\ifvers@incomplet\vers@incompletfalse \newbox\curr@box \newbox\coll@box \newdimen\left@length \newdimen\total@length \newif\if@acco \@accofalse \newif\if@addvspace \@addvspacetrue \def\v@corr@offset{.5ex} \newenvironment{accogauche}[1][]{% \parskip = 0pt plus 0.3pt \global\let\ex@vspace\z@ \gdef\opt@text{#1}\@accotrue \par\noindent\global\left@length\maxdimen \setbox\coll@box\vtop\bgroup } {% \strut \egroup \unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi \edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}% \setbox\curr@box\llap{\opt@text$\left\{\vrule width\z@ height\mid@ht depth\mid@ht\right.$}% \dp\curr@box\z@\ht\curr@box\z@ \kern\left@length \lower\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@\box\curr@box \kern-\left@length\box\coll@box } \newenvironment{accodroite}[1][]{% \parskip = 0pt plus 0.3pt \global\let\ex@vspace\z@ \gdef\opt@text{#1}\@accotrue \par\noindent\global\left@length\maxdimen \global\total@length-\maxdimen \setbox\coll@box\vtop\bgroup } {% \strut \egroup \unless\ifx\ex@vspace\z@\par\kern\ex@vspace\noindent\fi \edef\mid@ht{\the\dimexpr(\dp\coll@box+\ht\coll@box)/\tw@-\v@corr@offset}% \setbox\curr@box\hbox{$\left.\vrule width\z@ height\mid@ht depth\mid@ht\kern8pt\right\}$\opt@text}% \edef\mid@ht{\the\dimexpr\dp\coll@box/\tw@-\v@corr@offset/\tw@}% \dp\curr@box\z@\ht\curr@box\z@ \rlap{\box\coll@box}% \kern\total@length\lower\mid@ht\box\curr@box } \newcommand*\pers[2][]{% \parskip = 0pt plus 0.3pt \ifx\ex@vspace\z@\if@acco\gdef\ex@vspace{2ex}\else\vspace{2ex}\fi\else\vspace{2ex}\fi \noindent \edef\tmp@cnt@footnote{\number\c@footnote}% \setbox\curr@box\hbox{\lowercase{\textsc{#2}}\ifx\@empty#1\@empty\else% \saveexpandmode\noexpandarg% \IfBeginWith{#1}{ }{\emph{#1}}{, \emph{#1}}% \restoreexpandmode\fi}% \ifdim\dimexpr(\linewidth-\wd\curr@box)/2\relax<\left@length\global\left@length\dimexpr(\linewidth-\wd\curr@box)/\tw@\relax\fi \ifdim\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box>\total@length\global\total@length\dimexpr(\linewidth-\wd\curr@box)/\tw@+\wd\curr@box\fi \kern\dimexpr(\linewidth-\wd\curr@box)/2\relax \c@footnote\tmp@cnt@footnote\relax \@addvspacefalse\box\curr@box\par\nobreak } \newcommand*\affiche@vers[2]{% % \small\setlength{\baselineskip}{0.9\baselineskip} \parskip = 0pt plus 0pt \par\noindent\hspace{#1}% \edef\tmp@cnt@footnote{\number\c@footnote}% \setbox\curr@box\hbox{#2}% \ifdim#1<\left@length\global\left@length#1\fi \ifdim\dimexpr#1+\wd\curr@box>\total@length\global\total@length\dimexpr#1+\wd\curr@box\fi \unless\ifx\vers@incomplet\@empty\hphantom{\vers@incomplet\ }\fi \c@footnote\tmp@cnt@footnote\relax \ifvers@incomplet\g@addto@macro\vers@incomplet{\begingroup\every@vers#2\endgroup}% \else\let\vers@incomplet\@empty \fi \@addvspacetrue\begingroup\every@vers#2\endgroup%\par% \parskip = 5pt plus 0pt%% % \normalsize } \newcommand*\definitacteur[2][]{% \expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{% \ifx\@empty#1\@empty\pers[##1]{#2}% \else\pers[##1]{#1}% \fi}% } \definitacteur{pierrot} \begin{document} \pierrot[et ici\footnote{Il a besoin d'une note} une didascalie] Blablabla. \end{document}
Merci d'avance !
Partager