是否可以看到 LaTeX 所使用的精确测量值?

是否可以看到 LaTeX 所使用的精确测量值?

这源于一个具体问题(见下文),但现在我更想知道的是:有没有办法查看 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*。或者,如果出于某种原因,您只想在目录和页眉中使用数字,至少选择一个不会将空标签放在其自己的段落中的部分形状。

相关内容