让章节标题突出于文字区域

让章节标题突出于文字区域

我试图将章节标题放在页面边缘,并用彩色背景框围绕它们。周围的框需要设置在文档主体之外。到目前为止,我已经阅读了 typearea、geometry、layout、titlesec、TikZ 和其他文档,但还没有找到解决方案。

http://latex-project.org/guides/lb2-ch4.pdf这是我想要实现的效果的一个示例。其中章节标题比正文更靠右。我想要的是将章节标题放在页面左边缘的一个彩色框中,类似于附件文档第二页上的标题。

这是框的代码。我只需要一种方法将其放置在页面左侧边缘。

\documentclass[a4paper,12pt]{report}

\usepackage{tikz}
\usepackage[uppercase, sf, explicit, raggedright]{titlesec} %
\usepackage{xcolor}

\makeatletter
\titleformat{\chapter}
{\sffamily\huge\bfseries}
{}
{0pt}
{
    \usetikzlibrary{backgrounds}
    \tikzstyle{background rectangle}=[fill=cyan]
    \begin{tikzpicture}[framed]
    \color{white}   
    \draw (0,0) +(3ex,0) node[anchor=west]{Chapter \thechapter{} \filright#1};
    \end{tikzpicture}
}
\makeatother
\begin{document}
\chapter{Chaptertitle}
\end{document}

答案1

您可以简单地将第 4 个参数设置\titleformat为负值。

在下面的 MWE 中我将其设置在页面的左边距:

\documentclass[a4paper,12pt]{report}

\usepackage{tikz}
\usetikzlibrary{backgrounds}

\usepackage[uppercase, sf, explicit, raggedright]{titlesec} %
\usepackage{xcolor}
\usepackage{lipsum} % only for the example

\titleformat{\chapter}
{\sffamily\huge\bfseries}
{}
{\dimexpr-\oddsidemargin-\hoffset-1in}
{%
    \tikzstyle{background rectangle}=[fill=cyan]%
    \begin{tikzpicture}[framed]
    \color{white}
    \draw (0,0) +(3ex,0) node[anchor=west]{Chapter \thechapter{} \filright#1};
    \end{tikzpicture}%
}
\begin{document}
\chapter{Chaptertitle}
\lipsum[1-5]
\end{document} 

输出:

在此处输入图片描述

一些评论:

  1. \makeatletter...\makeatother没有必要,因为没有@涉及任何字符。
  2. 我已经把它放到\usetikzlibrary{backgrounds}定义之外了。
  3. 我删除了定义中的一些虚假空格,并%在某些行的末尾添加了

编辑

为了对未编号的章节实现相同的结果,\tableofcontents您必须声明一个单独的\titleformat

\titleformat{name=\chapter,numberless}
{\sffamily\huge\bfseries}
{}
{\dimexpr-\oddsidemargin-\hoffset-1in}
{%
    \tikzstyle{background rectangle}=[fill=cyan]%
    \begin{tikzpicture}[framed]
    \color{white}
    \draw (0,0) +(3ex,0) node[anchor=west]{#1};
    \end{tikzpicture}%
}

完成 MWE

\documentclass[a4paper,12pt]{report}

\usepackage{tikz}
\usetikzlibrary{backgrounds}

\usepackage[uppercase, sf, explicit, raggedright]{titlesec} %
\usepackage{xcolor}
\usepackage{lipsum} % only for the example

\titleformat{\chapter}
{\sffamily\huge\bfseries}
{}
{\dimexpr-\oddsidemargin-\hoffset-1in}
{%
    \tikzstyle{background rectangle}=[fill=cyan]%
    \begin{tikzpicture}[framed]
    \color{white}
    \draw (0,0) +(3ex,0) node[anchor=west]{Chapter \thechapter{} \filright#1};
    \end{tikzpicture}%
}

\titleformat{name=\chapter,numberless}
{\sffamily\huge\bfseries}
{}
{\dimexpr-\oddsidemargin-\hoffset-1in}
{%
    \tikzstyle{background rectangle}=[fill=cyan]%
    \begin{tikzpicture}[framed]
    \color{white}
    \draw (0,0) +(3ex,0) node[anchor=west]{#1};
    \end{tikzpicture}%
}

\begin{document}
\tableofcontents

\chapter{Chaptertitle}
\lipsum[1-5]
\end{document} 

输出 (ToC)

在此处输入图片描述

相关内容