删除章节号前的空格

删除章节号前的空格

我看过这个问题: titlesec 软件包在 \chapter 顶部添加了额外的空间,尽管命令相反

从某种意义上来说,我的代码也是重复的。但是,我想知道是否有更简单的方法可以做到这一点?解决方案中的这段代码让我完全不知所措。

\makeatletter
\def\ttl@mkchap@i#1#2#3#4#5#6#7{%
  \ttl@assign\@tempskipa#3\relax\beforetitleunit
  %\vspace*{\@tempskipa}% NEW
  \global\@afterindenttrue
  \ifcase#5 \global\@afterindentfalse\fi
  \ttl@assign\@tempskipb#4\relax\aftertitleunit
  \ttl@topmode{\@tempskipb}{%
    \ttl@select{#6}{#1}{#2}{#7}}%
  \ttl@finmarks  % Outside the box!
  \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}}
\makeatother

我通常使用包来构造命令等,但这部分代码我完全不明白。抱歉,我真正需要的是一个替代方案,因为我通常更喜欢了解我的代码的作用。

我的章节标题样式如下: The result 代码如下:

\documentclass[11pt]{book}

\usepackage{titlesec, lipsum, xcolor}

\titleformat{\chapter}[display] % shape
    {\bfseries \Huge}
    {\hfill \textcolor{gray!50}{\thechapter}} % Label
    {0pt} % Separation after chapter name.
    {\vspace{70pt}} % Between Chapter no. and name
    [\vspace{-1em}\rule{\textwidth}{0.3pt}\\]

\titlespacing*{\chapter}{0pt}{0pt}{0pt} 

\begin{document}

\chapter{Hi}
\lipsum[1-8]

\end{document}

基本上,如果可能的话,我想消除前后的所有空间,最好通过比解决方案中提供的代码更简单的代码。

我不明白其中的、 、 、 、\def\ttl\global\ifcase任何带有的东西代表什么。\relax\fi\beforetitleunit\makeatletter\makeatother@

如果没有“更简单”的解决方案,我想那也没关系……如果有帮助的话,我可以使用 tikz 和其他东西。或者,如果有除默认形状之外的形状可以给我同样的结果,那就太好了。

答案1

就这些,我尽量简单。看来你误解了一些参数。请注意,对于水平对齐,我使用了titlesec( \filleft, \filright, \filcenter) 提供的专用工具;规则 ( \titlerule) 也是如此。此外,你的第四个强制参数中的 `vspace{70pt} 应该只是第三个参数中的 70pt。

\documentclass[11pt]{book}
\usepackage[showframe]{geometry}%
 \usepackage{titlesec, lipsum, xcolor}

\titleformat{\chapter}[display] % shape
    {\bfseries \Huge}
    {\filleft \textcolor{gray!50}{\thechapter}} % Label
    {70pt} % Separation after chapter label.
    {} % Before chapter title
    [\titlerule]
\titlespacing*{\chapter}{0pt}{-5ex}{1ex}

\begin{document}

\chapter{Hi}
\lipsum[1-8]

\end{document} 

enter image description here

相关内容