我用了这个代码:
\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
,是章节标题。