Si vous compilez ce qui suit, un rond rouge apparaît dans l'entête des deux chapitres.

En fait, j'aimerais qu'il n'apparaisse que quand l'environnement « abstract » est appelé après la commande \chapter. Il ne devrait donc pas apparaître dans le second chapitre.

Ouvrir dans l'éditeur Overleaf
\documentclass[fleqn,11pt]{book}
\usepackage{tikz}
\usepackage{environ}

\makeatletter
\NewEnviron{abstract}{%
    {\toks@=\expandafter{\BODY}%
     \immediate\write\@auxout
         {\global\string\@namedef
{MyAbstract\the\value{AbstractNum}}{\the\toks@}}}}

\newcounter{AbstractNum}

\def\@makechapterhead#1{%
\addtocounter{AbstractNum}{1}%
 {%
    \begin{tikzpicture}[remember picture,overlay]%
        \node at (current page.north west){%    
        \begin{tikzpicture}[remember picture,overlay]%
        \fill[blue!10,draw=none] (0,0) rectangle (22,-8);%
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        \fill[red] (15,-5) circle (2cm);%
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        \node at (15,-5){\csname MyAbstract\the\value{AbstractNum}\endcsname};%
        \end{tikzpicture}};%
    \end{tikzpicture}%
  \par\vspace*{190\p@}%
}}%
%
\makeatother

% ---------------------------------------------> Début du document <---
\begin{document}
% ---------------------------------------------------------------------

% ---------------------------------------------------------------------
\chapter{Titre chapitre}
\begin{abstract}
texte resume
\end{abstract}
\section{Titre section}
texte
% ---------------------------------------------------------------------
\chapter{Titre chapitre}
\section{Titre section}
texte
\end{document}

Posée 30 Sep, 19:02

pluton's gravatar image

pluton
658118
Taux d'acceptation : 30%

Modifiée 03 Oct, 02:25

Pathe's gravatar image

Pathe ♦♦
4.6k138126

Histoire d'être bien certain d'avoir compris : quand vous écrivez que certains chapitres ne font pas appel à cet environnement, c'est de votre fait, c'est à dire que vous choisissez de ne pas placer cet environnement en tête de chapitre ?

Ou le problème est-il que vous avez placé les commandes nécessaires mais qu'elles ne sont pas exécutées lors de la compilation ?

(30 Sep, 20:16) Pathe ♦♦ Pathe's gravatar image

@Pathe oui c'est de mon fait, je choisis de ne pas appeler cet environnement dans certains chapitres. Et j'aimerais tester ce choix, parce qu'il a des répercussions ailleurs.

(30 Sep, 20:19) pluton pluton's gravatar image

Utiliser un booléen mis à vrai par l'environnement et mis à faux par \chapter.

Lien permanent

Publiée 01 Oct, 00:46

Le%20TeXnicien%20de%20surface's gravatar image

Le TeXnicien de surface
8885
Taux d'acceptation : 39%

bonne idée. Mais disons que cet environnement "abstract" doit activer la création d'un schéma dans l'entête du chapitre au sein duquel il est appelé. Et cette entête est définie avant l'appel de l'environnement. J'ai l'impression qu'il faut passer par le fichier .aux et attendre une deuxième compilation...

(01 Oct, 02:02) pluton pluton's gravatar image

Bon, après réflexion pendant la nuit, je me suis aperçu que la façon de définir l'environnement « abstract » n'était pas la plus simple. À la place, on peut faire comme suit :

Ouvrir dans l'éditeur Overleaf
\documentclass[fleqn,11pt]{book}
\usepackage{tikz}
\usepackage{environ}

\NewEnviron{abstract}{%
        \begin{tikzpicture}[remember picture,overlay]%
        \node at (current page.north west){%    
        \begin{tikzpicture}[remember picture,overlay]%
        \fill[red] (15,-5) circle (2cm);%
        \node at (15,-5){\BODY};%%
       \end{tikzpicture}};%
    \end{tikzpicture}%
}

\makeatletter
\def\@makechapterhead#1{%
    \begin{tikzpicture}[remember picture,overlay]%
        \node at (current page.north west){%    
        \begin{tikzpicture}[remember picture,overlay]%
        \fill[blue!10,draw=none] (0,0) rectangle (22,-8);%
        \end{tikzpicture}};%
    \end{tikzpicture}%
  \par\vspace*{190\p@}%
}%
%
\makeatother

% ---------------------------------------------> Début du document <---
\begin{document}
% ---------------------------------------------------------------------

% ---------------------------------------------------------------------
\chapter{Titre chapitre}
\begin{abstract}
texte resume
\end{abstract}
\section{Titre section}
texte
% ---------------------------------------------------------------------
\chapter{Titre chapitre}
\section{Titre section}
texte
\end{document}

On utilise allègrement l'option [remember picture,overlay] de TikZ. L'appel à la commande \chapter crée un rectangle bleu et l'appel à la commande abstract crée un rond rouge et du texte dans le même système de coordonnées... Je viens d'y penser.

Nota bene : la méthode répond à la question. Cependant, je suis toujours intéressé par une autre réponse à la question en gardant l'idée initiale de passer par le fichier .aux, s'il y en a une. En effet, cette solution où un unique environnement tikz est déclaré (il n'y en aurait pas dans l'environnement "abstract") est plus générale, puisqu'il serait possible d'adapter les autres éléments de l'environnement tikz en fonction de l'appel à "abstract", ce qui n'est pas possible actuellement.

Lien permanent

Publiée 03 Oct, 19:28

pluton's gravatar image

pluton
658118
Taux d'acceptation : 30%

Modifiée 04 Oct, 11:53

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×4

Question posée : 30 Sep, 19:02

Question vue : 512 fois

Dernière mise à jour : 04 Oct, 11:53