Dans le TeXbook, à l’exercice 10.4, on cherche à produire une règle graduée.
La solution proposée est la suivante.
--------------------------------------------
\def\tick#1{\vrule height 0pt depth#1pt}
\def\{\hbox to 1cm{\hfil\tick4\hfil\tick8}}
\vbox{\hrule\hbox{\tick8\\\\\\\\\\}}
--------------------------------------------
Cette solution fonctionne contrairement à la mienne (voir ci-dessous).
En effet, on peut constater que la règle est partiellement produite.
--------------------------------------------
\def\tick#1{\vrule height 0pt depth#1pt}
\setbox1=\hbox to 1cm{\tick8\hfil\tick4\hfil}
\vbox{\hrule\hbox to 10cm{\leaders\copy1\hfil\tick8}}
--------------------------------------------
Pourquoi n’obtient-on pas le bon résultat ?
Cordialement,
Kevin Vigouroux
Bonjour,
--------------------------------------------
\def\tick#1{\vrule height 0pt depth#1pt}
\setbox1=\hbox to 1cm{\tick8\hfil\tick4\hfil}
\vbox{\hrule\hbox to 10cm{\leaders\copy1\hfil\tick8}}
--------------------------------------------
Pourquoi n’obtient-on pas le bon résultat ?
Parce que la \hbox de 10cm ne peut pas contenir 10 fois la \hbox de 1cm
plus le dernier \tick8, qui a une largeur non nulle. Donc la \hbox de
1cm n’est incluse que 9 fois.
Une solution est de “partager” le grand trait entre le début et la fin
de la \hbox de 1cm :
--------------------------------------------
\def\tick#1{\vrule height 0pt depth#1pt width 0.2pt}
\setbox1=\hbox to 1cm{\tick8\hfil\tick4\tick4\hfil\tick8}
\vbox{\hrule\hbox to 10cm{\leaders\copy1\hfil}}
--------------------------------------------
Mais dans ce cas, bien sûr, le premier et le dernier traits sont moins
larges que les autres.
–
Nico
Nicolas Markey xyz@xyz.tld writes:
Bonjour,
--------------------------------------------
\def\tick#1{\vrule height 0pt depth#1pt}
\setbox1=\hbox to 1cm{\tick8\hfil\tick4\hfil}
\vbox{\hrule\hbox to 10cm{\leaders\copy1\hfil\tick8}}
--------------------------------------------
Pourquoi n’obtient-on pas le bon résultat ?
Parce que la \hbox de 10cm ne peut pas contenir 10 fois la \hbox de 1cm
plus le dernier \tick8, qui a une largeur non nulle. Donc la \hbox de
1cm n’est incluse que 9 fois.
Oui, effectivement.
Une solution est de “partager” le grand trait entre le début et la fin
de la \hbox de 1cm :
--------------------------------------------
\def\tick#1{\vrule height 0pt depth#1pt width 0.2pt}
\setbox1=\hbox to 1cm{\tick8\hfil\tick4\tick4\hfil\tick8}
\vbox{\hrule\hbox to 10cm{\leaders\copy1\hfil}}
--------------------------------------------
Mais dans ce cas, bien sûr, le premier et le dernier traits sont moins
larges que les autres.
Une solution plus naturelle serait de faire un retour-arrière.
--------------------------------------------
\def\tick#1{\vrule height 0pt depth#1pt}
\setbox1=\hbox to 1cm{\tick8\hfil\tick4\hfil}
\vbox{\hrule\hbox to 10cm{\leaders\copy1\hfil\hskip-0.4pt\tick8}}
--------------------------------------------
Cordialement,
Kevin Vigouroux