2
1

Comment composer avec LaTeX une page A4 constituée de cadres concentriques, situés à 1mm les uns des autres, et référencés ?

Le premier cadre, centré sur la page, ferait 20,8 cm sur 29,5 et serait marqué « 1 mm » ; le deuxième, tout aussi centré, mesurerait 20,6 cm sur 29,3 et serait marqué « 2 mm », et ainsi de suite.

L'impression d'un tel document permettrait d'apprécier la zone d'impression utile d'une imprimante.

Posée 29 Nov '15, 01:18

Pathe's gravatar image

Pathe ♦♦
5.7k178169
Taux d'acceptation : 58%

1
Ouvrir dans l'éditeur
\documentclass[a4paper]{article}
\usepackage[rgb]{xcolor}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{siunitx}

\begin{document}
\sisetup{round-mode = figures,
    round-precision = 2}
\begin{tikzpicture}[overlay,remember picture]    
\foreach\step in {0.1,0.2,...,1}{
    \definecolor{currentcolor}{hsb}{\step, 1, 1}
    \draw[currentcolor]($(current page.north west)+(\step cm,-\step cm)$)--($(current page.south west)+(\step cm,\step cm)$)--($(current page.south east)+(-\step cm,\step cm)$)--($(current page.north east)+(-\step cm,-\step cm)$)--($(current page.north west)+(\step cm,-\step cm)$);
    \node[fill=white] (a) at ($(current page.north west)+(\step*10 cm,-\step cm)$) {\tiny \textcolor{currentcolor}{\SI{\step}{cm}}};
}
\end{tikzpicture}
\end{document}

Tu peux changer les valeurs du \foreach pour avoir le pas que tu veux.

Edit : suite au comentaire de @Pathe j'ai mis à jour le code.

(04 Déc '15, 09:48) jerome dequeker jerome%20dequeker's gravatar image

Par contre, il semble que chaque imprimante a ses propres marges. C'est à dire que par exemple, chez moi, la mire est décalée d'un millimètre sur la droite.

(04 Déc '15, 09:53) jerome dequeker jerome%20dequeker's gravatar image

Le code est bien, mais pour être vraiment utile il faudrait un pas d'un millimètre. Or, dans ce cas, les mesures en millimètres se superposent les unes aux autres et deviennent illisibles.

Pour y voir plus, il faudrait :

  • les décaler plus les unes des autres,
  • revenir en début de ligne au bout de quelques mesures,
  • inscrire ces mesures sur fond blanc (j'ai essayé l'option fill=white mais pour une raison qui m'échappe elle ne fonctionne pas)
  • colorer alternativement les lignes pour mieux les repérer.

Ainsi cette mire d'impression pourrait rendre de grands services aux utilisateurs.

(04 Déc '15, 12:27) Pathe ♦♦ Pathe's gravatar image
1

J'ai mis à jour mon code.

Les annotations sont décalées pour ne pas être superposées, et sont écrites sur un fond blanc.

J'ai coloré alternativement les lignes.

Cependant, la boucle ne va que de 0 à 1 pour des raisons de simplicité :

  • pour le code couleur, la variable step doit être comprise entre 0 et 1, et je n'ai pas le courage de regarder comment utiliser le reste de la division ;
  • il n'y a pas trop d'annotations, donc il n'est pas nécessaire de les faire « revenir à la ligne ».
(04 Déc '15, 14:40) jerome dequeker jerome%20dequeker's gravatar image

Voici une version qui ne répond pas parfaitement aux spécifications puisque les distances ne sont affichées que tous les 5mm.

J'utilise la bibliothèque TikZ fit pour réduire peu à peu la taille du nœud box qui est initialisé à current page. Pour réduire sa taille, l'astuce consiste à utiliser une valeur de inner sep négative (ici, -1mm). Il faut aussi savoir qu'on peut itérativement redéfinir un noeud en utilisant son ancienne position.

Pour dessiner une ligne spéciale (grosse et avec un label) toutes les cinq lignes, j'utilise un calcul sur la valeur \i (son \rest) grâce à un appel à evaluate dans le \foreach.

Ouvrir dans l'éditeur
\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}[overlay,remember picture]
  \tikzset{
    petite ligne/.style={line width=.1pt,draw=gray},
    grosse ligne/.style={line width=1.pt,draw=black},
    fit réduit/.style={fit=(box),inner sep=-1mm},
  }

  % initialisation du noeud box
  \node[line width=0,fit=(current page),inner sep=0](box){};

  \foreach \i [evaluate={\i as \rest using int(mod(\i,5))}] in {1,2,...,90}{
    % réduction de 1mm
    \node[fit=(box),inner sep=-1mm] (box) {};

    % cadre différent selon \rest
    \ifnum\rest=0\relax
      \draw[grosse ligne] (box.south west) rectangle (box.north east);
      \path (box.north) node[font=\tiny,fill=white]{\i\space mm};
    \else
      \draw[petite ligne] (box.south west) rectangle (box.north east);
    \fi
  }
\end{tikzpicture}
\end{document}
Lien permanent

Publiée 11 Déc '15, 02:53

Paul%20Gaborit's gravatar image

Paul Gaborit
58216
Taux d'acceptation : 50%

Modifiée 11 Déc '15, 02:53

Une croix ayant pour extrémités les coins de la page me parait tout aussi efficace tout en étant plus économe en encre et plus simple à coder.

Ouvrir dans l'éditeur
\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[overlay,remember picture]
    \draw(current page.north west)--(current page.south east);
    \draw(current page.north east)--(current page.south west);
    %\foreach\rr in {1,2,...,182}{\draw(current page.center)circle(\rr mm);}
\end{tikzpicture}
\end{document}
Lien permanent

Publiée 29 Nov '15, 01:25

unbonpetit's gravatar image

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

Modifiée 29 Nov '15, 10:20

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 : 29 Nov '15, 01:18

Question vue : 3,668 fois

Dernière mise à jour : 16 Déc '15, 18:01