
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:
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...
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}
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ê pgf
terá a macro útil \pgflinewidth
que 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}