取消/撤消 \setlength{\parindent}{3ex}

取消/撤消 \setlength{\parindent}{3ex}

假设我想在文章中设置一个具有不同缩进/跳段的节。有没有办法在该节的末尾撤消该命令,以便下一个节再次表现得像我从未在 parindent 上使用过 setlength 一样?

我的意思是我可以\setlength{\parindent}{}再次使用带有默认参数的 -command 但如果我不知道 latex 的标准参数怎么办?

\documentclass{article}
\usepackage{ngerman, blindtext}
\begin{document}
\section{Section with different settings}

\setlength{\parindent}{0cm}\setlength{\parskip}{4ex plus 0.3ex minus 0.1ex}

\blindtext\par\blindtext
%Here I would want to undo the setlength command from above and go back to default
\section{Section back to default settings}

\blindtext\par\blindtext
\end{document}

答案1

将有问题的部分括在一个组内。

\documentclass{article}
\usepackage{ngerman, blindtext}
\begin{document}

\begingroup
\section{Section with different settings}

\setlength{\parindent}{0cm}\setlength{\parskip}{4ex plus 0.3ex minus 0.1ex}

\blindtext\par\blindtext
\endgroup

%Here I would want to undo the setlength command from above and go back to default
\section{Section back to default settings}

\blindtext\par\blindtext
\end{document}

答案2

在某些情况下,与使用组不同的方法可能会很有用:

\newcommand{\keepvalues}{%
  \edef\restorevalues{%
    \parindent=\the\parindent
    \parskip=\the\parskip
  }%
}

然后你可以说

\keepvalues

\section{Section with different settings}

\setlength{\parindent}{0cm}
\setlength{\parskip}{4ex plus 0.3ex minus 0.1ex}

<text>

\restorevalues

\section{Section back to default settings}

更通用的方法是给出\keepvalues要保留的长度参数列表:

\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\keepvalues}{ O{\parindent,\parskip} }
  {
   \tl_clear:N \l_tmpa_tl
   \clist_map_inline:nn { #1 }
     { \tl_put_right:Nx \l_tmpa_tl { ##1 = \skip_use:N ##1 } }
   \cs_set:Npx \restorevalues { \tl_use:N \l_tmpa_tl }
  }
\ExplSyntaxOff

\begin{document}

\keepvalues[\parindent,\parskip,\leftmargini]

\section{Section with different settings}

\setlength{\parindent}{0cm}
\setlength{\parskip}{4ex plus 0.3ex minus 0.1ex}
\addtolength{\leftmargini}{2em}

<text>

\restorevalues

\section{Section back to default settings}

该调用\keepvalues相当于\keepvalues[\parindent,\parskip]。参数中可以包含一个参数列表,可以使用 进行设置\setlength

当然,没有嵌套调用。

相关内容