\newgeometry 位于本节开头

\newgeometry 位于本节开头

由于某些原因,我想在每个部分开始时更改几何形状,然后手动使用\restoregeometry。我的第一个猜测是使用在部分开始时\titleformat强制执行。\newgeometry

代码如下:

\documentclass[twoside]{book}
\usepackage{geometry}
\usepackage{blindtext}
\geometry{a4paper}
\usepackage{titlesec}


\titleformat{\section}[block]{}{}{0pt}{\newgeometry{textwidth=5cm}} 

\begin{document}

\blindtext
\section{essai}
\blindtext

\end{document}

该部分从新页面开始,因此我认为从某种意义上说,它\newgeometry已执行,但对文本宽度没有影响。我做错了什么?正确的做法是什么?

精度:实际上我不想对各个部分执行此操作,但对于我使用手动定义的一类标题\titleclass,但我认为这没有什么实际区别。

答案1

您可以使用\cspretofrometoolbox来添加\newgeometry\section

\documentclass[twoside]{book}
\usepackage{geometry}
\usepackage{blindtext}
\geometry{a4paper}
\usepackage{titlesec,etoolbox}

\titleformat{\section}[block]{}{}{0pt}{} 

\cspreto{section}{\newgeometry{textwidth=5cm}}

\begin{document}

\blindtext
\section{essai}
\blindtext

\end{document}

答案2

我们不能使用\newgeometry\restoregeometrymipage。

\titlepacing(*)这是使用titlesec 包的解决方案

\documentclass[twoside]{book}
\usepackage{geometry}
\usepackage{blindtext}
\geometry{a4paper}
\usepackage{titlesec}



\titleformat{\section}[block]{}{}{0pt}{}


\titlespacing*{\section}{-1cm}{2cm}{1cm}[10cm]

\begin{document}

\blindtext
\section{bla bla bla bla bla bla bla bla bla bla bla bla bla bla}
\blindtext

\end{document}

编辑

\documentclass[twoside]{book}
\usepackage{geometry}
\usepackage{blindtext}
\geometry{a4paper}
\usepackage{titlesec}


\titleformat{\section}[block]{}{}{0pt}{} 
\let\mtsection\section
\renewcommand{\section}{%
\newgeometry{textwidth=5cm}\mtsection}

\begin{document}

\blindtext
\section{essai}
\blindtext

\end{document}

相关内容