我尝试使用titlesec
以下代码来个性化我的硕士论文的章节和部分标题
\documentclass{book}
\usepackage{tikz}
\usepackage{titlesec}
\usepackage{lipsum}
\makeatletter
\titleformat{\chapter}[display]
{}% format
{\raggedleft \@chapapp{} \thechapter}% label
{1ex} % sep
{\raggedleft \Huge \scshape \bfseries} % before
[\normalfont {\tikz \shade[left color=blue!20,right color=blue, shading angle=45] (0,0) rectangle (\textwidth,5pt);}]% after
\makeatother
\begin{document}
\chapter{Introduction}
\lipsum[1]
\end{document}
输出结果如下
我想要的只是删除章节名称和 TikZ 绘图之间的空格,并定义绘图和文本之间的垂直空间(我唯一能做到的是章节和章节名称之间的空间)。另外,哪个最适合这个,titlesec
或者将所有这些定义为类文件?
我也尝试了第二种选择,但遇到了类似的问题:
\documentclass{book}
\makeatletter
\usepackage{tikz}
\usepackage{palatino}
\usepackage[T1]{fontenc}
\usepackage{titlesec}
\def\@makechapterhead#1{%
\vspace*{10\p@}%
{\parindent \z@ \raggedleft \reset@font%
\@chapapp{} \thechapter\par\nobreak%
{\Huge \scshape \bfseries #1\par\nobreak%
\vspace{5pt}
{\tikz \shade[left color=blue!20,right color=blue, shading angle=45] (0,0) rectangle (\textwidth,5pt);}}\par\nobreak%
\vspace{40pt}
}}%
\begin{document}
\chapter{Introduction}
\chapter{Internal Structure}
\section{Internal Strut}
%\section{part 1}
\end{document}
答案1
直接在垂直列表中插入该行:
\makeatletter
\def\@makechapterhead#1{%
\vspace*{10\p@}%
{\parindent \z@ \raggedleft \reset@font
\@chapapp{} \thechapter\par\nobreak
{\Huge \scshape \bfseries #1\vadjust{\putline}\par\nobreak}%
\vspace{40pt}
}}
\makeatother
\newcommand{\putline}{%
\kern10pt %%% <-- adjust here
\hbox{\tikz \shade[left color=blue!20,right color=blue, shading angle=45] (0,0) rectangle (\textwidth,5pt);}%
}
根据需要调整字距量。