Caixa excessivamente cheia inexplicável

Caixa excessivamente cheia inexplicável

Eu estava tentando criar uma longa barra horizontal onde colocar as notas de uma avaliação e criei o seguinte código.

\documentclass{article}

\usepackage{tikz}
\setlength{\parindent}{0pt}

\newcommand{\TotalMarks}[1]{%
    \tikz\draw[thick]
    (0,0) -- (\linewidth,0) -- 
    ++(0,2em) -- ++(-2em,0) -- 
    ++(0,-2em) node[pos=0.6,left] 
        {\makebox[2.9cm]{\textbf{Total: #1 marks}\hfill}};}

\begin{document}
\TotalMarks{2}
\end{document}

Não consigo entender por que ocorre um erro Overfull:

Overfull \hbox (0.79999pt too wide) in paragraph at lines 14--15[][] 

Como posso consertar isso?

Obrigado por qualquer ajuda que você possa me dar.

Responder1

Existem duas coisas que causam isso:

  1. Recuo de parágrafo. O recuo de parágrafo padrão é adicionado antes do tikzpicture, você pode desativá-lo para uma única linha com \noindent, ou seja\noindent\tikz...

  2. Quando você desenha uma linha, a caixa delimitadora se estenderá pela metade da largura da linha além das coordenadas finais, como você pode ver neste exemplo:

     \documentclass[border=5mm]{standalone}
     \usepackage{tikz}
     \begin{document}
    
     \begin{tikzpicture}
       \draw [line width=5mm] (0,0) -- (1,0);
       \draw [very thin, red] (0,-0.5) -- (0,0.5);
    
       \draw [thin, blue] (current bounding box.south east) rectangle (current bounding box.north west);
     \end{tikzpicture}
     \end{document}
    

insira a descrição da imagem aqui

A linha azul indica a caixa delimitadora.

Se você adicionar line cap=rect, a linha se estenderá para preencher o espaço em branco e você pgfterá a macro útil \pgflinewidthque possui a largura do caminho atual. Portanto, você pode fazer \draw[thick,line cap=rect] (0,0) -- (\linewidth-\pgflinewidth,0) ....

Exemplo prático, como egreg mencionou, você não deve usar minimal(Por que a classe mínima deveria ser evitada?):

\documentclass{article}

\usepackage{tikz}

\newcommand{\TotalMarks}[1]{%
    \tikz\draw[thick,line cap=rect]
    (0,0) -- (\linewidth-\pgflinewidth,0) -- 
    ++(0,2em) -- ++(-2em,0) -- 
    ++(0,-2em) node[pos=0.6,left] 
        {\makebox[2.9cm]{\textbf{Total: #1 marks}\hfill}};}

\begin{document}
\noindent\TotalMarks{2}
\end{document}

informação relacionada