假设我想在文章中设置一个具有不同缩进/跳段的节。有没有办法在该节的末尾撤消该命令,以便下一个节再次表现得像我从未在 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
。
当然,没有嵌套调用。