![\newgeometry 位于本节开头](https://linux22.com/image/315725/%5Cnewgeometry%20%E4%BD%8D%E4%BA%8E%E6%9C%AC%E8%8A%82%E5%BC%80%E5%A4%B4.png)
由于某些原因,我想在每个部分开始时更改几何形状,然后手动使用\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
您可以使用\cspreto
frometoolbox
来添加\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
,\restoregeometry
mipage。
\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}