买者自负

买者自负

我正在用 Overleaf (pdfLaTeX) 中的 LaTeX 编写一本书,使用tufte-bookdocument 类型。为了制作标题页,我有以下代码:

\documentclass[notoc,symmetric]{tufte-book}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\title{Sliiightly Long Title \\ \LARGE With A Subtitle}
\begin{document}
\maketitle

格式工作正常,但标题在呈现的 PDF 中出现了难看的黑条,如下所示:

标题图片

检查警告,我发现我得到了Overfull \hbox (8.42856pt too wide)。我可以手动将字体大小设置为\Huge,但它太小了,看起来很糟糕。 \HUGE看起来moresize还不错,但我在书的其余部分将标题放在了页眉中,它也会出现\HUGE在那里。(它还会将副标题\LARGE放在页眉中,但我认为我实际上有点喜欢那里的效果,所以我保留了它。)

最终,我只想摆脱因过满而产生的黑条\hbox。(为什么在这种情况下会这样做,我不认为当我过满时我通常会看到这种情况\hbox?)有人知道这样做的方法吗,最好是一种不会弄乱我的运行头或完全破坏标题格式的方法?

答案1

\end{document}当我添加以完成代码时,我无法重现问题中的问题。我收到过满\hbox警告,但输出中没有出现灰色或黑色块。我所知道的唯一可能导致这种情况的事情是如果您使用了该选项,因为 LaTeX 会使用边距中的块直观地draft指示坏块的位置。\hbox

因此,我的答案试图消除警告。由于我无法在输出中重现该块,因此我无法诊断其原因或尝试解决问题。因此,我也无法说消除坏盒是否会消除该块。但是,它确实消除了警告。

买者自负

我会考虑做如下的事情:

  • 调整标题的字母间距,使得这里的大写字母间距不太大\allcaps(下面,我使用 150 而不是 200,但您需要根据需要进行调整);

    \newcommand{\titleallcapsspacing}[1]{\textls[150]{#1}}% adjust this as appropriate
    

    \fontsize{36}{40}\selectfont\par\noindent\textcolor{darkgray}{\titleallcapsspacing{\MakeTextUppercase{\thanklesstitle}}}%
    
  • \subtitle根据字幕的类别创建一个新的宏\title

    \newcommand\@subtitle{}
    \newcommand\plainsubtitle{}
    \newif\if@subtitle
    \newcommand{\subtitle}[2][]{%
      \@subtitletrue
      \gdef\@subtitle{#2}%
      \begingroup
        % TODO store contents of \thanks command
        \renewcommand{\thanks}[1]{}% swallow \thanks contents
        \protected@xdef\thanklesssubtitle{#2}%
      \endgroup
      \ifthenelse{\isempty{#1}}%
      {\renewcommand{\plainsubtitle}{\thanklesstitle}}% use thankless subtitle
      {\renewcommand{\plainsubtitle}{#1}}% use provided plain-text subtitle
    }
    
  • 定制\maketitlepage使用\subtitle

    \if@subtitle
      \smallskip\par
      \LARGE\textcolor{darkgray}{\allcaps{\thanklesssubtitle}}%
    \fi
    
  • 如果合适的话,调整页眉、页脚或任何要合并的内容的定义\plainsubtitle(下面没有显示,因为我不知道你有什么或没有什么,或者你在这里想要什么或不想要什么,但显然,\LARGE如果你真的愿意,你可以使用或其他东西,虽然副标题比标题大似乎很奇怪——或者也许我误解了你的意思)。

然后你可以写类似

\title{Sliiightly Long Title}
\subtitle{With A Subtitle}

\maketitle

产生以下结果,没有坏框。

这里只有好的盒子

代码:

\documentclass[notoc,symmetric,british]{tufte-book}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\makeatletter
\newcommand{\titleallcapsspacing}[1]{\textls[150]{#1}}% adjust this as appropriate
\renewcommand{\maketitlepage}[0]{%
  \cleardoublepage
  {%
    \sffamily
    \begin{fullwidth}%
      \fontsize{18}{20}\selectfont\par\noindent\textcolor{darkgray}{\allcaps{\thanklessauthor}}%
      \vspace{11.5pc}%
      \fontsize{36}{40}\selectfont\par\noindent\textcolor{darkgray}{\titleallcapsspacing{\MakeTextUppercase{\thanklesstitle}}}%
      \if@subtitle
      \smallskip\par
      \LARGE\textcolor{darkgray}{\allcaps{\thanklesssubtitle}}%
      \fi
      \vfill
      \fontsize{14}{16}\selectfont\par\noindent\allcaps{\thanklesspublisher}%
    \end{fullwidth}%
  }
  \thispagestyle{empty}%
  \clearpage
}
\newcommand\@subtitle{}
\newcommand\plainsubtitle{}
\newif\if@subtitle
\newcommand{\subtitle}[2][]{%
  \@subtitletrue
  \gdef\@subtitle{#2}%
  \begingroup
    % TODO store contents of \thanks command
    \renewcommand{\thanks}[1]{}% swallow \thanks contents
    \protected@xdef\thanklesssubtitle{#2}%
  \endgroup
  \ifthenelse{\isempty{#1}}%
  {\renewcommand{\plainsubtitle}{\thanklesstitle}}% use thankless subtitle
  {\renewcommand{\plainsubtitle}{#1}}% use provided plain-text subtitle
}
\makeatother
\title{Sliiightly Long Title}
\subtitle{With A Subtitle}
\begin{document}
\maketitle
\end{document}

另一种方法是使用changepage包(该包已经由类加载)来调整边距\maketitlepage

另一种选择是单独使用\includepdf{}和生成标题页,完全取消\maketitle。没有特别的理由不这样做。如果您只需要进行微小调整,那是一回事,但是,如果您需要更彻底的更改,单独的文件可能是可行的方法。由于标题页基本上是一次性的,因此手动指定格式的常见缺点不适用。

相关内容