为什么 \textwidth 不是文本的宽度?

为什么 \textwidth 不是文本的宽度?

我试图显示两个东西(一个有边框和一个有阴影的边框),它们都延伸到整个文本区域 - 也就是说,因为我的边距为 1cm,所以边框应该从页面左边缘 1cm 处开始,一直延伸到页面右边缘 1cm 处。

不幸的是,它似乎开始得太远(约 1.5 厘米)并且继续向右太远(距边缘约 0.5 厘米)。我做错了什么?

\documentclass[a4paper,10pt]{report}
\usepackage[portrait,a4paper,margin=1.0cm,headsep=5mm]{geometry}
\usepackage{color}
\begin{document}

\framebox[\textwidth]{test}

\colorbox[gray]{0.85}{
    \parbox{\textwidth}{test}
}

\end{document}

答案1

这是缩进问题。当您开始一个新段落时,文本(或其他所有内容)将按 中指定的一定量缩进\parindent。解决方案是告诉 LaTeX 不必使用 来缩进该行\noindent

\documentclass[a4paper,10pt]{report}
\usepackage[portrait,a4paper,margin=1.0cm,headsep=5mm]{geometry}
\usepackage{color}
\begin{document}

\framebox[\textwidth]{test}

\colorbox[gray]{0.85}{
    \parbox{\textwidth}{test}
}
\noindent\framebox[\textwidth]{test}

\noindent\colorbox[gray]{0.85}{
    \parbox{\textwidth}{test}
}

\end{document}

我不确定,但我认为\colorbox大于,因为在指定宽度\textwidth时应该考虑到其内容的内边框\parbox

答案2

对于彩盒案例添加

 \usepackage{calc}

然后

\noindent\colorbox[gray]{0.85}{%
    \parbox{\textwidth - 2 \fboxsep}{test}%
}

两者%需要否则,颜色框由一个字空间、一个 parbox 和另一个字空间组成,因此其内容比内部框宽 2 个空格,然后颜色框本身会添加填充,因此您需要使 parbox 稍微小一些。

答案3

评论

  1. 指定showframe=true或 就像选项showframe一样geometry将显示\textwidth边框。边框将让您轻松查看内容是否超出了边框。

    在此处输入图片描述

  2. \colorbox没有框架,只有填充。您需要调整 parbox 大小\dimexpr\textwidth-2\fboxsep\relax

  3. \fbox同时具有 padding 和 frame,则 parbox 大小变为\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax

  4. 用于\noindent删除段落缩进。

  5. \fboxsep控制填充并\fboxrule控制框架厚度。

\documentclass{article}
\usepackage[
    paperwidth=7cm,
    paperheight=7cm,
    margin=2cm,
    showframe=true]
{geometry}

\usepackage{xcolor}



\begin{document}
    \noindent
    \colorbox{red}{%
        \parbox{\dimexpr\textwidth-2\fboxsep\relax}
        {\centering test}%
    }
    
    \noindent
    \fbox{%
        \parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}
        {\centering test}%
    }
\end{document}

相关内容