我最近在写论文,我想减少章节前的空格。我找到了解决方案,但它对我来说不起作用\usepackage[magyar]{babel}
我使用以下代码:
\documentclass[a4paper,12pt]{report}
% Switch between these babel languages to see the difference
\usepackage[magyar]{babel}
%\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[margin=2.5cm]{geometry}
\usepackage{showframe,lipsum}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}{\vspace*{50\p@}}{}{}{}
\patchcmd{\@makeschapterhead}{\vspace*{50\p@}}{}{}{}
\makeatother
\title{Reducing space before chapter}
\begin{document}
\chapter{Lorem ipsum}
\lipsum[1]
\chapter*{Lorem ipsum}
\lipsum[1]
\end{document}
你能帮助我吗?
答案1
您可以放置代码
\makeatletter
\patchcmd{\@makechapterhead}{\vspace*{50\p@}}{}{}{}
\patchcmd{\@makeschapterhead}{\vspace*{50\p@}}{}{}{}
\makeatother
立即地后 \begin{document}
补丁必须满足以下要求才能生效。更正式的方法是与babel
钩afterextras
:
\makeatletter
\AddBabelHook{patches}{afterextras}{%
\patchcmd{\@makechapterhead}{\vspace*{50\p@}}{}{}{}
\patchcmd{\@makeschapterhead}{\vspace*{50\p@}}{}{}{}
}
\makeatother
原因是某些语言重新格式化l
语言d
定义f
文件(或.ldf
)中的分段单元,并将它们作为称为的“事件”的一部分执行extras
(具体来说,因为magyar
这包含在magyar.ldf
将是\extrasmagyar
)。因此,即使\patchcmd
来自etoolbox
可能在前导码内工作,或者甚至在事件期间\AtBeginDocument
被覆盖。因此事件是修补的合适位置。babel
extras
afterextras