这源于一个具体问题(见下文),但现在我更想知道的是:有没有办法查看 LaTeX 使用的精确测量值?也就是说:页边距有多少空间,第 2 页或第 3 页文本开始前还剩下多少空白,等等?
具体问题:我试图让一本书的所有标题看起来相同:章节标题没有问题,但需要进行一些调整才能使参考书目和目录标题完全相同(简而言之:一个粗体全大写标题和一个\hrule
下面的)。
由于我不清楚的原因,目录页的章节标题在页面上的位置比其他章节标题高。经过一番搜索,我做了一些调整,现在在我看来,章节标题是几乎与其他的相同,但不完全一样。我想解决这个问题,但尝试用眼睛跟踪垂直高度提出了一个更大的问题:是否有一种编程方式来查看各部分之间的确切间距?
这是一张我试图跟踪的、用箭头标记的特定间距的照片:
。
以下是没有经过我的笨拙修复后的情况。我很快就会就此提出一个单独的问题:
这是MWE:
% [[- LaTeX prelude
\documentclass[11pt,letterpaper,oneside]{book}
\usepackage{fontspec}
\usepackage{titles}
\renewcommand\thesection{\arabic{section}}
\usepackage{titlesec}
\usepackage{titletoc}
\usepackage[extramarks]{titleps}
\newcounter{firstLine}
\setcounter{firstLine}{1}
\newmarkset{firstLine}
\newextramark*{firstLine}{firstLine}
\newcommand*\topfirstLine{\topextramarks{firstLine}{\arabic{firstLine}}}
\newcommand*\botfirstLine{\botextramarks{firstLine}{\arabic{firstLine}}}
\titleformat{\section}{\centering\normalfont\itshape}{}{0em}{}
\titleformat{\subsection}[runin]{\normalfont\bfseries}{}{0em}{}
\titleformat{\chapter}[display]
{\centering\large\bfseries}{}{0pt}{}[\bigskip\hrule]
\titlespacing{\chapter}{0pt}{-50pt}{30pt}
\newpagestyle{toc}{%
\sethead[]% even-left
[CONTENTS]% even-center
[]% even-right
{}% odd-left
{CONTENTS}% odd-center
{}% odd-right
\setfoot{}%left
{\thepage}%center
{}%right
}
\newpagestyle{introduction}{%
\sethead[]% even-left
[INTRODUCTION: \sectiontitle]% even-center
[]% even-right
{}% odd-left
{INTRODUCTION: \sectiontitle}% odd-center
{}% odd-right
\setfoot{}%left
{\thepage}%center
{}%right
}
\newpagestyle{text}{%
\sethead[]% even-left
[ODYSSEY BOOK 1]% even-center
[]% even-right
{}% odd-left
{ODYSSEY BOOK 1}% odd-center
{}% odd-right
\setfoot{}%left
{\thepage}%center
{}%right
}
\newpagestyle{commentary}{%
\sethead[]% even-left
[COMMENTARY:~%
\edef\tempa{\topfirstLine}\edef\tempb{\botfirstLine}%
\topfirstLine\ifx\tempa\tempb\relax\else--\botfirstLine\fi]% even-center
[]% even-right
{}% odd-left
{COMMENTARY:~%
\edef\tempa{\topfirstLine}\edef\tempb{\botfirstLine}%
\topfirstLine\ifx\tempa\tempb\relax\else--\botfirstLine\fi}% odd-center
{}% odd-right
\setfoot{}%left
{\thepage}%center
{}%right
}
\newpagestyle{bibliography}{%
\sethead[]% even-left
[\toptitlemarks{BIBLIOGRAPHY}]% even-center
[]% even-right
{}% odd-left
{\toptitlemarks{BIBLIOGRAPHY}}% odd-center
{}% odd-right
\setfoot{}%left
{\thepage}%center
{}%right
}
\usepackage{hyperref}
\usepackage{lipsum}
% -]]
% [[- Document-
\begin{document}
\begin{titlepage}
\begin{center}
\huge Homer's \textit{Odyssey} Book 1
\vskip2in
\newpage
\end{center}
\end{titlepage}
\pagenumbering{roman}
\pagestyle{toc}
% See http://tex.stackexchange.com/a/35269/29387 for the \vskip
% Briefly: makes distance between chapter head and text same as for toc title
% and text.
\addtocontents{toc}{\vskip -1.0em}
\setcounter{tocdepth}{1} % Don't show subsections in the TOC
% \bigskip here keeps the whitespace above toc title and chapters identical
\renewcommand\contentsname{\bigskip C\,O\,N\,T\,E\,N\,T\,S}
\tableofcontents
\pagenumbering{arabic}
\pagestyle{introduction}
\chapter{I\,N\,T\,R\,O\,D\,U\,C\,T\,I\,O\,N}
\lipsum[1]
\pagestyle{text}
\chapter{O\,D\,Y\,S\,S\,E\,Y\,\ B\,O\,O\,K\ 1}
\lipsum[2]
\pagestyle{commentary}
\chapter{C\,O\,M\,M\,E\,N\,T\,A\,R\,Y}
\lipsum[3]
\end{document}
% -]]
答案1
这个例子有很多奇怪的标记。我删除了\,
(应在其他地方应用字母间距)和所有页面样式(为什么每章都更改页面样式???)。然后我添加了,\showoutput
以便 TeX 在日志文件中留下页面的表示。
% [[- LaTeX prelude
\documentclass[11pt,letterpaper,oneside]{book}
%\usepackage{fontspec}
\usepackage{titles}
\usepackage{titlesec}
\usepackage{titletoc}
\usepackage[extramarks]{titleps}
\newcounter{firstLine}
\setcounter{firstLine}{1}
\newmarkset{firstLine}
\newextramark*{firstLine}{firstLine}
\newcommand*\topfirstLine{\topextramarks{firstLine}{\arabic{firstLine}}}
\newcommand*\botfirstLine{\botextramarks{firstLine}{\arabic{firstLine}}}
\titleformat{\chapter}[display]
{\centering\large\bfseries}{}{0pt}{}[\bigskip\hrule]
\titlespacing{\chapter}{0pt}{-50pt}{30pt}
\usepackage{hyperref}
\usepackage{lipsum}
% a new page style for each chapter????
\showoutput
\begin{document}
\begin{titlepage}
\begin{center}
\huge Homer's \textit{Odyssey} Book 1
\vskip2in
\newpage
\end{center}
\end{titlepage}
\pagenumbering{roman}
\setcounter{tocdepth}{1} % Don't show subsections in the TOC
% \bigskip here keeps the whitespace above toc title and chapters identical
\renewcommand\contentsname{CONTENTS}
\tableofcontents
\pagenumbering{arabic}
\chapter{INTRODUCTION}
\lipsum[1]
\chapter{ODYSSEY BOOK 1}
\lipsum[2]
\chapter{COMMENTARY}
\lipsum[3]
\end{document}
查看日志,您会看到目录页:
...\vbox(541.40024+0.0)x360.0, glue set 452.1889fil
....\write-{}
....\pdfdest name{chapter*.1} xyz
....\glue(\topskip) 11.0
....\rule(0.0+0.0)x*
....\penalty 10000
....\glue -50.0
....\glue 0.0
....\glue(\parskip) 0.0 plus 1.0
....\glue(\baselineskip) 4.20004
....\hbox(9.79996+4.20004)x360.0, glue set 141.93057fil
.....\glue(\leftskip) 0.0 plus 1.0fil
.....\rule(9.79996+4.20004)x0.0
.....\OT1/cmr/bx/n/12 C
.....\OT1/cmr/bx/n/12 O
因此,从页面顶部到标题上方基线的空间是
11pt -50pt +0pt +(0pt 加 1pt)
这是可以的,尽管最好不要在那里使用可拉伸的 parskip 胶水,同样,最好不要\bigskip
在标题和规则之间使用可拉伸的胶水,因为这些空间可以根据页面上的其他项目进行拉伸,因此会使标题的位置不一致。
但在下一页INTRODUCTION
你会看到
...\vbox(541.40024+0.0)x360.0, glue set 346.42981fil
....\write-{}
....\pdfdest name{chapter.1} xyz
....\write3{\protect \BOOKMARK [0][-]{chapter.1}{INTRODUCTION}{}% 1}
....\write1{\@writefile{toc}{\protect \contentsline {chapter}{\protect \numberl
ine \ETC.}
....\mark{{\protect \MakeUppercase {CONTENTS}}{\protect \MakeUppercase {Chapt
\ETC.}
....\write1{\@writefile{lof}{\protect \addvspace {10\p@ }}}
....\write1{\@writefile{lot}{\protect \addvspace {10\p@ }}}
....\glue(\topskip) 11.0
....\rule(0.0+0.0)x*
....\penalty 10000
....\glue -50.0
....\glue 0.0
....\glue(\parskip) 0.0 plus 1.0
....\glue(\baselineskip) 4.20004
....\hbox(9.79996+4.20004)x360.0, glue set 180.0fil
.....\glue(\leftskip) 0.0 plus 1.0fil
.....\rule(9.79996+4.20004)x0.0
.....\rule(9.79996+4.20004)x0.0
.....\penalty 10000
.....\glue(\parfillskip) 0.0
.....\glue(\rightskip) 0.0 plus 1.0fil
....\penalty 10000
....\glue 0.0
....\glue 0.0
....\glue(\parskip) 0.0 plus 1.0
....\glue(\baselineskip) 0.0
....\hbox(9.79996+4.20004)x360.0, glue set 124.80556fil
.....\glue(\leftskip) 0.0 plus 1.0fil
.....\rule(9.79996+4.20004)x0.0
.....\OT1/cmr/bx/n/12 I
.....\OT1/cmr/bx/n/12 N
您会在标题上方看到一大段额外内容:
....\glue(\parskip) 0.0 plus 1.0
....\glue(\baselineskip) 4.20004
....\hbox(9.79996+4.20004)x360.0, glue set 180.0fil
.....\glue(\leftskip) 0.0 plus 1.0fil
.....\rule(9.79996+4.20004)x0.0
.....\rule(9.79996+4.20004)x0.0
.....\penalty 10000
.....\glue(\parfillskip) 0.0
.....\glue(\rightskip) 0.0 plus 1.0fil
因此,INTRODUCTION 比 CONTENTS 低,因为上面有一个段落,所以你有一个额外的内容,\parskip
并且额外的内容\baselineskip
来自一行段落。该段落看起来像垂直空白,因为除了
....\hbox(9.79996+4.20004)x360.0, glue set 180.0fil
.....\glue(\leftskip) 0.0 plus 1.0fil
.....\rule(9.79996+4.20004)x0.0
.....\rule(9.79996+4.20004)x0.0
.....\penalty 10000
.....\glue(\parfillskip) 0.0
.....\glue(\rightskip) 0.0 plus 1.0fil
这是一条中心线(拉伸leftskip
,并rightskip
带有两个支柱(零宽度规则)和零 parfillskip。
这似乎是您正在使用的标题包之一的“功能”。
添加*
到介绍中表明它与目录没有直接关系,未编号的标题比编号的标题高一行(段落)。
% [[- LaTeX prelude
\documentclass[11pt,letterpaper,oneside]{book}
%\usepackage{fontspec}
%\usepackage{titles}
\usepackage{titlesec}
\usepackage{titletoc}
\usepackage[extramarks]{titleps}
\newcounter{firstLine}
\setcounter{firstLine}{1}
%\newmarkset{firstLine}
%\newextramark*{firstLine}{firstLine}
%\newcommand*\topfirstLine{\topextramarks{firstLine}{\arabic{firstLine}}}
%\newcommand*\botfirstLine{\botextramarks{firstLine}{\arabic{firstLine}}}
\titleformat{\chapter}[display]
{\centering\large\bfseries}{}{0pt}{}[\bigskip\hrule]
\titlespacing{\chapter}{0pt}{-50pt}{30pt}
\usepackage{hyperref}
\usepackage{lipsum}
% a new page style for each chapter????
%\showoutput
\begin{document}
\begin{titlepage}
\begin{center}
\huge Homer's \textit{Odyssey} Book 1
\end{center}
\end{titlepage}
\pagenumbering{roman}
\setcounter{tocdepth}{1} % Don't show subsections in the TOC
% \bigskip here keeps the whitespace above toc title and chapters identical
\renewcommand\contentsname{CONTENTS}
\tableofcontents
\pagenumbering{arabic}
\chapter*{INTRODUCTION}
\lipsum[1]
\chapter{ODYSSEY BOOK 1}
\lipsum[2]
\chapter{COMMENTARY}
\lipsum[3]
\end{document}
答案2
您正在指定[display]
在单独的段落中排版章节标签。但是,您还指定了一个空标签。因此,每个 都会得到一个空段落\chapter
。由于未编号的章节无论如何都不会获得标签,因此在这些情况下没有这样的段落。如果您不想要编号的章节,则应使用\chapter*
。或者,如果出于某种原因,您只想在目录和页眉中使用数字,至少选择一个不会将空标签放在其自己的段落中的部分形状。