![普通文本的顶部边距已固定](https://linux22.com/image/439965/%E6%99%AE%E9%80%9A%E6%96%87%E6%9C%AC%E7%9A%84%E9%A1%B6%E9%83%A8%E8%BE%B9%E2%80%8B%E2%80%8B%E8%B7%9D%E5%B7%B2%E5%9B%BA%E5%AE%9A.png)
想要创建有两种页面类型的书。
页面包含
a) 章节名称
b) 普通文本段落
页面仅包含普通文本段落
问题是,当我想在所有页面上使用具有固定顶部页边距的普通文本段落时,该怎么做?例如距页面顶部 5 厘米。
+————————-—+
| chapter |
| |
| text .. |
| .. text. |
+—————————-+
1) Page with chapter
+————————-—+
| | <— here I want empty space
| |
| text .. |
| .. text. |
+—————————-+
2) Page without chapter
编辑:
以下是示例代码https://www.overleaf.com/3771752458rvswcxcnhzwk
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{plain}
\begin{document}
\chapter{Introduction}
\lipsum[1-10]
\end{document}
答案1
您可以重新定义\@makechapterhead
以制作一个零高度框,然后向后退一行。\@makeschapterhead
对于未编号的章节,您也需要进行类似的修改。
\documentclass{book}
\usepackage[top=225pt,bottom=3cm,heightrounded]{geometry}
\usepackage{lipsum}
\makeatletter
\def\@makechapterhead#1{%
\vbox to 0pt{%
\vss
\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\fi
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}%
\vspace{-\baselineskip}%
}
\def\@makeschapterhead#1{%
\vbox to 0pt{%
\parindent \z@ \raggedright
\normalfont
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}%
\vspace{-\baselineskip}%
}
\makeatother
\pagestyle{plain}
\begin{document}
\chapter{Introduction}
\lipsum[1-20]
\end{document}
您需要调整top
和bottom
值以满足您的需要,并且很可能还需要调整线宽。
答案2
如果我理解正确的话,要求是将章节号和标题放在顶部边距中。这可以使用geometry
和titlesec
包来完成。使用geometry
包,可以定义所有页面的顶部边距。要将章节号和标题放在顶部边距中,可以使用\titlespacing*
和\titleformat
命令。这里添加了一个 MWE,假设顶部边距为 5 厘米。
\documentclass{book}
\usepackage{inputenc}
\usepackage{lipsum}
\usepackage[top=5cm]{geometry}
\usepackage{titlesec}
\titlespacing*{\chapter}{0pt}{-4cm}{1cm}
\titleformat{\chapter}[display]{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{10pt}{\Huge}
\pagestyle{plain}
\begin{document}
\chapter{Introduction}
\lipsum[1-10]
\chapter{Another chapter}
\lipsum[1-10]
\end{document}