原因不明的滿箱

原因不明的滿箱

我試圖創建一個長水平條來放置評估標記,並且我創建了以下程式碼。

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

我不明白為什麼它會給出 Overfull 錯誤:

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

我該如何修復它?

感謝您給我的任何幫助。

答案1

造成這種情況的原因有兩點:

  1. 段落縮排。標準段落縮排新增在 tikzpicture 之前,您可以使用 停用單行縮排\noindent,即\noindent\tikz...

  2. 當您繪製一條線時,邊界框實際上會超出結束座標延伸線寬的一半,正如您從以下範例中看到的:

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

在此輸入影像描述

藍線表示邊界框。

如果添加line cap=rect,該行將延伸以填充該空白區域,並且您將擁有一個具有當前路徑寬度的pgf方便巨集。\pgflinewidth因此,你可以這樣做\draw[thick,line cap=rect] (0,0) -- (\linewidth-\pgflinewidth,0) ...

工作範例,正如egreg所提到的,你不應該使用minimal(為什麼要避免最小班級?):

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

相關內容