Unerklärliche Überfüllte Kiste

Unerklärliche Überfüllte Kiste

Ich habe versucht, einen langen horizontalen Balken zu erstellen, in den ich die Noten einer Beurteilung eintragen kann und habe den folgenden Code erstellt.

\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}

Ich kann nicht verstehen, warum die Fehlermeldung „Überfüllung“ angezeigt wird:

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

Wie kann ich es reparieren?

Vielen Dank für Ihre Hilfe.

Antwort1

Dies kann zwei Ursachen haben:

  1. Absatzeinzug. Der Standard-Absatzeinzug wird vor dem Tikzbild eingefügt. Sie können dies für eine einzelne Zeile mit deaktivieren \noindent, d. h.\noindent\tikz...

  2. Wenn Sie eine Linie zeichnen, wird der Begrenzungsrahmen tatsächlich um die halbe Linienbreite über die Endkoordinaten hinaus erweitert, wie Sie in diesem Beispiel sehen können:

     \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}
    

Bildbeschreibung hier eingeben

Die blaue Linie zeigt den Begrenzungsrahmen an.

Wenn Sie hinzufügen line cap=rect, wird die Linie erweitert, um den leeren Bereich auszufüllen, und Sie pgfhaben das praktische Makro \pgflinewidth, das die Breite des aktuellen Pfads hat. Daher können Sie Folgendes tun \draw[thick,line cap=rect] (0,0) -- (\linewidth-\pgflinewidth,0) ....

Funktionierendes Beispiel, wie egreg erwähnt hat, sollten Sie nicht verwenden minimal(Warum sollte die Minimalklasse vermieden werden?):

\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}

verwandte Informationen