2
1

Imaginons que j'ai créé la figure ci-dessous, et que je désire en citer les dimensions — en centimètres — dans le texte. Comment récupérer celles-ci ?

Ouvrir dans l'éditeur
\documentclass[12pt, BCOR=0mm, DIV=21, a5paper, oneside, icelandic]{scrartcl}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle,largesmallcaps]{kpfonts}
\usepackage{tikz}
\usepackage{babel}
\begin{document}%
\pagestyle{empty}%
\begin{tikzpicture}
\draw[thick,rounded corners=8pt]
(0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0.95,1) -- (2,2) -- (0,2) -- (1.05,1) -- (0,0) -- (2,0);
\end{tikzpicture}
\end{document}

Puisque TeX crée une boîte pour y mettre ladite figure, en récupérer les dimensions doit être possible, non ?

Posée 18 Fév '16, 01:29

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Modifiée 18 Fév '16, 21:35

@Pathe Je pense qu'il faut éditer ta question en « comment convertir des longueurs ».

(18 Fév '16, 20:26) touhami touhami's gravatar image

Plus TeXien et sans l'aide d'un package pour convertir les dimensions :

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{tikz}
\catcode`\@11
\def\convertunit#1#2{\strip@pt\dimexpr\numexpr\dimexpr #1\relax*65536/\dimexpr1#2\relax\relax sp\relax}
\catcode`\@12
\begin{document}
\setbox0=\hbox{%
    \begin{tikzpicture}
    \draw[thick,rounded corners=8pt]
    (0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0.95,1) -- (2,2) -- (0,2) -- (1.05,1) -- (0,0) -- (2,0);
    \end{tikzpicture}}

Voici un dessin \copy0{} dont les dimensions sont~: \convertunit{\dimexpr\ht0+\dp0}{cm}~cm verticalement par \convertunit{\wd0}{cm}~cm horizontalement.
\end{document}
Lien permanent

Publiée 18 Fév '16, 20:10

unbonpetit's gravatar image

unbonpetit ♦♦
1.8k18
Taux d'acceptation : 68%

Une solution, utiliser savebox

Ouvrir dans l'éditeur
\documentclass[12pt, BCOR=0mm, DIV=21, a5paper, oneside, icelandic]{scrartcl}
\usepackage{tikz}

\newsavebox\mtbox
\begin{document}%
\pagestyle{empty}%
\sbox{\mtbox}{\begin{tikzpicture}
\draw[thick,rounded corners=8pt]
(0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0.95,1) -- (2,2) -- (0,2) -- (1.05,1) -- (0,0) -- (2,0);
\end{tikzpicture}}
hauteur: \the\ht\mtbox-- profondeur: \the\dp\mtbox-- largeur: \the\wd\mtbox

\usebox{\mtbox} bla bla
\end{document}
Lien permanent

Publiée 18 Fév '16, 09:33

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Cela fonctionne. Désirant afficher les dimensions dans d'autres unités, j'ai cherché savebox sur le CTAN - sans succès. Ce fonctionnalité est-elle documentée ?

(18 Fév '16, 13:30) Pathe ♦♦ Pathe's gravatar image
1

sbox ou savebox est une boîte : un élément de base de LaTeX, au même titre que \mbox, \makebox et \fbox, \framebox et \parbox.

Pour la documentation voir par exemple latex.pdf ici.

Pour faire la conversion entre unités de longueur il y a l'extension printlen dont la documentation se trouve .

(18 Fév '16, 17:13) touhami touhami's gravatar image

@touhami : \mbox et \makebox sont des \hbox. Elles peuvent donc être considérées comme des éléments « de base ». \parbox est une boite verticale : c'est donc également un « élément de base ».

En revanche, \fbox et \framebox ne sont absolument pas des éléments de base : elles sont constituées de plusieurs niveaux d'imbrication de boites, sans compter les réglures à coup de \hrule et \vrule. Ce sont des éléments plus complexes.

(19 Fév '16, 12:10) unbonpetit ♦♦ unbonpetit's gravatar image

@unbonpetit Vous avez raison. Par éléments de base je veux dire « définis par le format latex et ne faisant pas partie d'une extension ».

(19 Fév '16, 12:54) touhami touhami's gravatar image

@touhami : ah oui, pardon, j'avais mal compris !

(19 Fév '16, 15:53) unbonpetit ♦♦ unbonpetit's gravatar image

@unbonpetit Pas besoin de présenter des excuses, vous avez raison, d'autres utilisateurs peuvent aussi mal comprendre ; donc merci d'avoir clarifié ce point.

(19 Fév '16, 16:58) touhami touhami's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus
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.