我该如何修复这个溢出 parbox 问题?

我该如何修复这个溢出 parbox 问题?

我正在尝试使用缩进的 parbox,但\textwidthwidth 参数中的命令没有考虑缩进,因此文本溢出了我的边距。我该如何解决这个问题?

例子:

\documentclass{article}

\usepackage{blindtext}

\setlength{\parindent}{0em}
\setlength{\parskip}{1em}

\begin{document}

\blindtext

\makebox[2cm][l]{Hello}
\parbox[t]{\textwidth}{\blindtext}

\end{document}

在此处输入图片描述

答案1

使用

 \parbox[t]{\dimexpr\textwidth-2cm\relax}{\blindtext}

以减小的尺寸\parbox

笔记:

  • 我还添加了尾随%以消除在之后添加的空格\makebox
  • showframe包用于显示边距。实际使用中不需要它。

在此处输入图片描述

代码:

\documentclass{article}

\usepackage{blindtext}
\usepackage{showframe}

\setlength{\parindent}{0em}
\setlength{\parskip}{1em}

\begin{document}

\blindtext

\makebox[2cm][l]{Hello}% <--- Trailing % added
\parbox[t]{\dimexpr\textwidth-2cm\relax}{\blindtext}

\end{document}

答案2

\parbox我建议不要使用\leftskip基于环境的环境:

\documentclass{article}

\usepackage{blindtext,showframe}

\setlength{\parindent}{0em}
\setlength{\parskip}{1em}

\newenvironment{shiftright}[1]
 {%
  \par
  \setlength{\leftskip}{2cm}
  \makebox[0pt][r]{\makebox[2cm][l]{#1}}\ignorespaces
 }
 {\par}

\begin{document}

\blindtext

\begin{shiftright}{Hello}
\blindtext
\end{shiftright}

\end{document}

或者,list基于以下环境:

\documentclass{article}

\usepackage{blindtext,showframe}

\setlength{\parindent}{0em}
\setlength{\parskip}{1em}

\newenvironment{shiftright}[1]
 {%
  \begin{list}{}{%
    \setlength{\leftmargin}{2cm}%
    \setlength{\topsep}{0pt}%
    \setlength{\partopsep}{0pt}%
  }%
  \item\makebox[0pt][r]{\makebox[2cm][l]{#1}}\ignorespaces
 }
 {\end{list}}

\begin{document}

\blindtext

\begin{shiftright}{Hello}
\blindtext
\end{shiftright}

\end{document}

在此处输入图片描述

相关内容