Je ne réussis pas à centrer une figure MetaPost, même avec l'environnement figure et la commande \centering (et je crois bien qu'avec MetaPost, on peut s'en passer).

Qu'est-ce qui cloche dans le code suivant, en termes de centrage ?

% pour composer cet ECM selon des usages vaguement européens
\documentclass[french]{scrartcl}
% choix de la fonte plex dans sa version sans empattements
\usepackage[sfdefault]{plex-sans}
% pour intégrer des dessins MetaPost compilés directement avec LuaLaTeX
\usepackage{luamplib}
% pour franciser la chose selon le paramètre passé à la classe
\usepackage{babel}

\begin{document}

Voici un carré :

\hspace{10pt}

% Centrage dans un environnement MetaPost
\begin{mplibcode}
beginfig(1);
    % Dimensions et points
    numeric u;
    u := 72; % Taille d'un côté (1 inch en points typographiques)
    pair A, B, C, D;
    A = (0, 0);
    B = (u, 0);
    C = (u, u);
    D = (0, u);

    % Dessin du carré
    draw A--B--C--D--cycle withpen pencircle scaled 1pt;

    % Centrage
    currentpicture := currentpicture shifted - center currentpicture;
endfig;
\end{mplibcode}

\hspace{10pt}

Et le texte continue ici, ce qui montre bien que cette figure n'est pas centrée !

\end{document}

Posée 10 heures auparavant

Pathe's gravatar image

Pathe ♦♦
7.5k42204251
Taux d'acceptation : 55%

Modifiée 9 heures auparavant


Lors de la production d’une figure avec mplibcode, luamplib ne force ni le mode horizontal ni le mode vertical. Les figures ainsi pro-duites ne respectent donc pas, par défaut, les commandes d’alignement comme \centering ou \raggedleft, à moins d’utiliser explicitement la commande \leavevmode grâce au mécanisme verbatimtex. Voir l’article dans les cahiers : https://publications.gutenberg-asso.fr/cahiers/article/view/34/175

\documentclass{article}
% pour intégrer des dessins MetaPost compilés directement avec LuaLaTeX
\usepackage{luamplib}
\begin{document}

Voici un carré :
\begin{center}
% Centrage dans un environnement MetaPost
\begin{mplibcode}
verbatimtex \leavevmode etex;
beginfig(1);
% Dimensions et points
numeric u;
u := 72; % Taille d'un côté (1 inch en points typographiques)
pair A, B, C, D;
A = (0, 0);
B = (u, 0);
C = (u, u);
D = (0, u);

% Dessin du carré
draw A--B--C--D--cycle withpen pencircle scaled 1pt;

% Centrage
currentpicture := currentpicture shifted - center currentpicture;
endfig;
\end{mplibcode}
\end{center} 
\end{document}

Pour que toutes les figures aient ce comportement, je rajoute souvent dans le préambule LaTeX:

\everymplib{verbatimtex \leavevmode etex;}

qui permet d’ajouter ce code en début de chaque environnement LaTeX mplibcode.

Lien permanent

Publiée 9 heures auparavant

Maxime's gravatar image

Maxime ♦
1.4k42439
Taux d'acceptation : 60%

Modifiée 8 heures auparavant

@Maxime : j'ai utilisé l'instruction \everymplib{verbatimtex \leavevmode etex;} après \begin{document} et ça fonctionne parfaitement pour toutes les figures. Je marque donc la question comme résolue.

En revanche, attention : l'ECM proposé en réponse ne compile pas en ligne.

(9 heures auparavant) Pathe ♦♦ Pathe's gravatar image
1

L'ecm est corrigé.

(8 heures auparavant) Maxime ♦ Maxime's gravatar image
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.