我正在写章节标题。我希望它们的背景延伸到页面边缘。
以下最小文档的缺点是:
- TOC 也有背景。我宁愿让 TOC 文本颜色采用我用于填充的红色背景颜色,而 TOC 中则完全没有背景填充。最终默认的黑色也可以(但红色会更酷,包括 TOC 页码)。
- 我需要将
\rule
我使用的相当多的部分向下移动,因为那里有一点填充看起来更好(并且有 p、q、g 等字母的背景) - 我不确定它是否适用于多行标题,但可能可以通过足够的填充和增加的大小来解决
\rule
。
\documentclass[12pt,a4paper,
% Add lists to TOC
listof=numbered,numbers=noenddot,version=first,
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\inputencoding{utf8}
\usepackage{helvet}
\usepackage{mathpazo}
\usepackage{setspace, lipsum}
\usepackage{xcolor}
\usepackage{tocloft}
% SECTION TITLES
% apply only singlespace to section starters (chapters, etc.)
% can also be set only for `chapter` instead of sectioning
\makeatletter
\addtokomafont{sectioning}
{\color[RGB]{255,255,255}
\makebox[0pt][l]{{\color[RGB]{212,17,37}\rule{1.3\textwidth}{2em}}}
}
{\setstretch{\setspace@singlespace}
}
\makeatother
\begin{document}
% TOC
\tableofcontents
\pagebreak
\chapter{Introduction}
\lipsum[1]
\chapter{Main Part}
\lipsum[2]
\chapter{Conclusion}
\lipsum[3]
\end{document}
我也看到了这个类似的线程,但我\blap
可能\tlap
无法很好地适应多行章节标题。
再说一遍,我确信有比我现在的方法更好的方法来实现我的目标,甚至可能是一个\colorbox
。但是最近几天我的头因为 LaTeX 输入而疼痛,我想对于这个棘手的问题,一些专业的帮助可能会有所帮助。
有人知道怎样实现它吗?
地位: LaTeX 用户 3 天。
答案1
这里建议使用。我还删除了不需要的mdframed
包。tocloft
\documentclass[12pt,a4paper,
% Add lists to TOC
listof=numbered,numbers=noenddot,version=first,
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\inputencoding{utf8}
\usepackage{helvet}
\usepackage{mathpazo}
\usepackage{setspace, lipsum}
\usepackage{xcolor}
\usepackage{mdframed}
\mdfdefinestyle{chapter}{rightmargin=-3cm,innerrightmargin=3cm,backgroundcolor=red,hidealllines=true}
\addtokomafont{chapter}{\color{white}}
\makeatletter
\renewcommand*{\@@makechapterhead}[1]{%
\chapterheadstartvskip
\begin{mdframed}[style=chapter]
\setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
\normalfont\sectfont\nobreak\size@chapter{}%
\if@chapterprefix
\let\@tempa\raggedsection
\else
\let\@tempa\@hangfrom
\fi
\@tempa{\ifnum \c@secnumdepth >\m@ne%
\if@chapterprefix
\expandafter\size@chapterprefix
\else
\expandafter\size@chapter
\fi
{\chapterformat}%
\if@chapterprefix
\size@chapterprefix{}\endgraf\nobreak\vskip.5\baselineskip
\fi
\fi
}%
{\raggedsection \interlinepenalty \@M \size@chapter{#1}\par}%
\end{mdframed}
\nobreak\chapterheadendvskip
}
\renewcommand*{\@@makeschapterhead}[1]{%
\chapterheadstartvskip%
\begin{mdframed}[style=chapter]
{\normalfont\sectfont\nobreak\size@chapter{}%
\setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}%
\raggedsection \interlinepenalty \@M \size@chapter{#1}\par}%
\end{mdframed}%
\nobreak\chapterheadendvskip%
}
\makeatother
\begin{document}
% TOC
\tableofcontents
\pagebreak
\chapter{Introduction}
\lipsum[1]
\chapter{Main Part}
\lipsum[2]
\chapter{Conclusion Conclusion Conclusion Conclusion Conclusion Conclusion Conclusion Conclusion Conclusion }
\lipsum[3]
\end{document}
答案2
我找到了新的解决方法对于原始问题评论中解释的问题。基本上,需要用\makeatletter
这个替换@marco-daniel 的旧内容:
\usepackage{xcolor}
\colorlet{chapterbackground}{red}
\addtokomafont{chapter}{\color{white}}
\makeatletter
\renewcommand\chapterlinesformat[3]{%
\colorbox{chapterbackground}{%
\parbox[c][\dimexpr\totalheight+0.3em]{\dimexpr\linewidth-2\fboxsep}{%
\raggedchapter%
\@hangfrom{#2}#3%
}}%
}
\renewcommand\chapterlineswithprefixformat[3]{%
\colorbox{chapterbackground}{%
\parbox[c][\dimexpr\totalheight+1em]{\dimexpr\linewidth-2\fboxsep}{%
\raggedchapter%
#2#3%
}}%
}
\makeatother
我现在需要弄清楚的是如何稍微缩进章节前缀,以便在左侧有一个小的水平空间作为填充。