minipage 的 \textwidth 实际上略宽且缩进,即使使用 parskip 包也是如此。为什么?

minipage 的 \textwidth 实际上略宽且缩进,即使使用 parskip 包也是如此。为什么?

这是我的 MWE:

\documentclass[]{article}
\usepackage{showframe}
\usepackage{lipsum}
\usepackage{parskip}




\begin{document}
\lipsum[1]


\fbox{
\begin{minipage}{\textwidth}
\lipsum[1]
\end{minipage}
}


\end{document}

为什么仍然有一个小的缩进,并且为什么框架minipage比整体框架更宽?

答案1

您的代码中有一些虚假空格\fbox,导致开头和结尾的间距问题(请参阅%行尾的百分号 ( ) 有什么用?(为什么我的宏会产生额外的空间?))。此外,文本块的宽度应减少\fbox规则的宽度(\fboxrule)和框间隙(\fboxsep两次(每侧一次)。

在此处输入图片描述

\documentclass{article}

\usepackage{showframe}
\usepackage{lipsum}
\usepackage{parskip}

\begin{document}

\lipsum[1]

% Note the use of '%' here...
\fbox{%
\begin{minipage}{\dimexpr\linewidth-2\fboxsep-2\fboxrule}
\lipsum[1]
\end{minipage}%
}

\end{document}

答案2

您需要考虑\fboxsep\fboxrule参数。这是一个fminipage与共享所有语法minipage并自行进行计算的新环境。

\documentclass[]{article}
\usepackage{parskip}

\usepackage{lipsum}

\ExplSyntaxOn
% a handy function
\cs_set_eq:NN \dimeval \dim_eval:n
\ExplSyntaxOff

\newsavebox{\fminipagebox}
\NewDocumentEnvironment{fminipage}{O{c}oO{#1}m}
 {%
  \begin{lrbox}{\fminipagebox}
  \IfNoValueTF{#2}
    {\begin{minipage}[#1]{\dimeval{#4-2\fboxsep-2\fboxrule}}}
    {\begin{minipage}[#1][#2][#3]{\dimeval{#4-2\fboxsep-2\fboxrule}}}
 }
 {%
  \end{minipage}
  \end{lrbox}\fbox{\usebox{\fminipagebox}}%
 }


\begin{document}
\lipsum[1][1-4]


\begin{fminipage}{\textwidth}
\lipsum[1][5-7]
\end{fminipage}

\begin{center}
x\begin{fminipage}[t][4cm][s]{4cm}
\lipsum[2][1]

\vfill

\lipsum[2][2]
\end{fminipage}
\end{center}

\end{document}

在此处输入图片描述

相关内容