更改标题格式时出错

更改标题格式时出错

我正在尝试使用像这样的章节标题格式 在此处输入图片描述

我用了这个代码:

 \newlength\chapnumb
 \setlength\chapnumb{4cm}
 \newcommand{\chaptertitlefont}{\normalfont\sffamily\Huge}
 \titleformat{\chapter}[block]
 {\normalfont\sffamily}{}{0pt}
 {\parbox[b]{\chapnumb}{%
 \fontsize{120}{110}\selectfont\thechapter}%
 \parbox[b]{\dimexpr\textwidth-\chapnumb\relax}{%
 \raggedleft%
 \hfill{\chaptertitlefont#1}\\
 \rule{\dimexpr\textwidth-\chapnumb\relax}{0.4pt}}}
 \titleformat{name=\chapter,numberless}[block]
 {\normalfont\sffamily}{}{0pt}
 {\parbox[b]{\chapnumb}{%
 \mbox{}}%
 \parbox[b]{\dimexpr\textwidth-\chapnumb\relax}{%
 \raggedleft%
 \hfill{\chaptertitlefont#1}\\
 \rule{\dimexpr\textwidth-\chapnumb\relax}{0.4pt}}}

但是这段代码给了我这个结果: 在此处输入图片描述

出现错误:

! Illegal parameter number in definition of \ttlf@chapter.

有人能帮助我吗?我尝试使用包“titlesec”,但也出现了错误。

先感谢您

答案1

这是一个具有更清晰代码的实用解决方案。

\RequirePackage{fix-cm}% if you want to use the default CM fonts
\documentclass[a4paper,oneside]{book}
\usepackage{titlesec}

\newlength\chapnumb
\setlength\chapnumb{4cm}

\newcommand{\chaptertitlefont}{\normalfont\sffamily\Huge}

\titleformat{\chapter}[block]
  {\normalfont\sffamily}
  {}
  {0pt}
  {\belabedtitle{\thechapter}}

\titleformat{name=\chapter,numberless}[block]
  {\normalfont\sffamily}
  {}
  {0pt}
  {\belabedtitle{\vphantom{0}}}

\newcommand{\belabedtitle}[2]{%
   \makebox[\chapnumb][l]{\fontsize{120}{0}\selectfont #1}%
   \parbox[b]{\dimeval{\textwidth-\chapnumb}}{%
     \raggedleft
     \chaptertitlefont #2\\\vspace{0.5ex}
     \hrule
   }%
  }

\begin{document}

\frontmatter

\tableofcontents

\mainmatter

\chapter{Introduction}

\end{document}

oneside选项只是将两个章节并排显示在图片中。

在此处输入图片描述

\belabeltitle是关键。它有两个参数:第一个是明确提供的,第二个是由提供的titlesec,是章节标题。

相关内容