![减少章节前的空间适用于英语,但不适用于匈牙利语 babel 包](https://linux22.com/image/289210/%E5%87%8F%E5%B0%91%E7%AB%A0%E8%8A%82%E5%89%8D%E7%9A%84%E7%A9%BA%E9%97%B4%E9%80%82%E7%94%A8%E4%BA%8E%E8%8B%B1%E8%AF%AD%EF%BC%8C%E4%BD%86%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%E5%8C%88%E7%89%99%E5%88%A9%E8%AF%AD%20babel%20%E5%8C%85.png)
我最近在写论文,我想减少章节前的空格。我找到了解决方案,但它对我来说不起作用\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