章节标题的彩色背景水平延伸至边缘

章节标题的彩色背景水平延伸至边缘

我正在写章节标题。我希望它们的背景延伸到页面边缘。

以下最小文档的缺点是:

  1. TOC 也有背景。我宁愿让 TOC 文本颜色采用我用于填充的红色背景颜色,而 TOC 中则完全没有背景填充。最终默认的黑色也可以(但红色会更酷,包括 TOC 页码)。
  2. 我需要将\rule我使用的相当多的部分向下移动,因为那里有一点填充看起来更好(并且有 p、q、g 等字母的背景)
  3. 我不确定它是否适用于多行标题,但可能可以通过足够的填充和增加的大小来解决\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

我现在需要弄清楚的是如何稍微缩进章节前缀,以便在左侧有一个小的水平空间作为填充。

相关内容