
Я пытался создать длинную горизонтальную полосу, на которой можно было бы разместить оценки, и создал следующий код.
\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}