Sèkun blog


Avoir un grille qui prend toute la hauteur restante de la page

2024-12-11 math | tags : latex

J'utilise pas mal le paquet exam qui permet de laisser un espace sur tout le reste de la page via \stretch{1}. On peut avoir une boite de réponse avec \makeemptybox{\stretch{1}} ou une grille via \fillwithgrid{\stretch{1}}.

J'avais besoin de ceci lors de la rédaction de copie via le programme Auto Multiple Choice. C'est un paquet latex, mais il nécessite d'avoir un type de document valnat article. J'avais néanmoins besoin de laisser des espaces de réponses (pour les questions ouvertes) sur plusieurs pages, donc la fin de la page en cours, d'où la nécessité d'une commande similaire à \stretch{1}, donnant cette hauteur.

Après plusieurs recherches, je suis parvenu à une solution satisfaisante en utilisant tcolorbox et tikz. Je définis les commandes suivantes:

\usepackage{tcolorbox}
\usepackage{tikz}

\newtcolorbox{emptybox}[1][]{colback=white, colframe=white, height fill, boxsep=0pt, space to=\restheight,#1}
\newtcolorbox{squarebox}[1][]{colback=white, height fill, space to=\restheight,#1}
\geometry{left=2cm,right=1.5cm}

\newcommand{\drawgrid}{\begin{emptybox}
    \begin{tikzpicture}[scale=1]
      \begin{scope}
        \draw[step=0.5cm, very thin, gray!60!white] (\textwidth, \restheight) grid (0, 0);
        % \draw[line width=0.01mm](0,0) rectangle (1,1);
      \end{scope}
    \end{tikzpicture}
  \end{emptybox}}

\newcommand{\drawsquare}{\begin{emptybox}
    \begin{tikzpicture}[scale=1]
      \begin{scope}
        \draw[line width=0.01mm](0,0) rectangle (\textwidth,\restheight);
      \end{scope}
    \end{tikzpicture}
  \end{emptybox}}

Ensuite, dans le document, il me suffit d'écrire \drawgrid ou \drawsquare pour avoir ce que je désirais.

Article publié le 11 décembre 2024.