
我試圖創建一個長水平條來放置評估標記,並且我創建了以下程式碼。
\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
造成這種情況的原因有兩點:
段落縮排。標準段落縮排新增在 tikzpicture 之前,您可以使用 停用單行縮排
\noindent
,即\noindent\tikz...
當您繪製一條線時,邊界框實際上會超出結束座標延伸線寬的一半,正如您從以下範例中看到的:
\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}