Я использовал стиль раздела, который нашелздесь. Проблема в том, что заголовок библиографии превращается в рамку, хотя я и пытался создать отдельный стиль для ненумерованных разделов.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage[explicit]{titlesec}
\usepackage{soul}
\definecolor{titleblue}{HTML}{4a7aa4}
\title{Sections and Chapters}
\author{Educ}
\date{\today}
\newbox\TitleUnderlineTestBox
\newcommand*\TitleUnderline[1]
{%
\bgroup
\setbox\TitleUnderlineTestBox\hbox{\colorbox{titleblue}\strut}%
\setul{\dimexpr\dp\TitleUnderlineTestBox-.3ex\relax}{.3ex}%
\ul{#1}%
\egroup
}
\newcommand*\SectionNumberBox[1]
{%
\colorbox{titleblue}
{%
\makebox[2.5em][c]
{%
\color{white}%
\strut
\csname the#1\endcsname
}%
}%
\TitleUnderline{\ \ \ }%
}
\titleformat{\section}
{\Large\bfseries\sffamily\color{titleblue}}
{\SectionNumberBox{section}}
{0pt}
{\TitleUnderline{#1}}
\titleformat{\subsection}
{\large\bfseries\sffamily\color{titleblue}}
{\SectionNumberBox{subsection}}
{0pt}
{\TitleUnderline{#1}}
\begin{document}
\maketitle
\section{The First Section}
\begin{thebibliography}{}
\bibitem{}
\end{thebibliography}
\end{document}
Редактировать: Вот сообщение об ошибке, которое появляется:
Я наткнулся на переносимый материал, заключенный в групповые скобки, с которыми я не могу справиться. Либо уберите скобки, либо сделайте материал неразрывным с помощью \mbox (\hbox). Обратите внимание, что пробел также считается возможной точкой переноса. См. страницу 4 руководства. Я оставляю черный квадрат, чтобы вы могли видеть, где я сейчас нахожусь.
решение1
Проблема, кажется, в нераскрытом имени раздела (если я не ошибаюсь). Следующий код полностью расширяет данное имя с расширением \edef
(это может привести к новым проблемам, я не уверен). Однако это работает для вашего MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage[explicit]{titlesec}
\usepackage{soul}
\definecolor{titleblue}{HTML}{4a7aa4}
\title{Sections and Chapters}
\author{Educ}
\date{\today}
\newbox\TitleUnderlineTestBox
\newcommand*\TitleUnderline[1]
{%
\bgroup
\setbox\TitleUnderlineTestBox\hbox{\colorbox{titleblue}\strut}%
\setul{\dimexpr\dp\TitleUnderlineTestBox-.3ex\relax}{.3ex}%
\edef\mytmp{#1}%
\expandafter\ul\expandafter{\mytmp}%
\egroup
}
\newcommand*\SectionNumberBox[1]
{%
\colorbox{titleblue}
{%
\makebox[2.5em][c]
{%
\color{white}%
\strut
\csname the#1\endcsname
}%
}%
\TitleUnderline{\ \ \ }%
}
\titleformat{\section}
{\Large\bfseries\sffamily\color{titleblue}}
{\SectionNumberBox{section}}
{0pt}
{\TitleUnderline{#1}}
\titleformat{\subsection}
{\large\bfseries\sffamily\color{titleblue}}
{\SectionNumberBox{subsection}}
{0pt}
{\TitleUnderline{#1}}
\begin{document}
\maketitle
\section{The First Section}
\begin{thebibliography}{}
\bibitem{}
\end{thebibliography}
\end{document}
Альтернатива
Ниже определяется альтернативный стиль, который форматирует ненумерованные разделы аналогично нумерованным (он использует report
и также определяет \chapter
соответствие, просто удалите это, и все будет хорошо article
). Он также удаляет ненужное повторение вызова \titleformat
для каждого уровня секционирования, определяя сокращенный макрос.
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage[explicit]{titlesec}
\usepackage{soul}
\definecolor{titleblue}{HTML}{4a7aa4}
\title{Sections and Chapters}
\author{Educ}
\date{\today}
\newlength\SectionNumberBoxPad
\newcommand*\TitleUnderline[1]
{%
\begingroup
\setul{\dimexpr\dp\strutbox+\fboxsep-.3ex\relax}{.3ex}%
\edef\mytmp{#1}%
\expandafter\ul\expandafter{\mytmp}%
\endgroup
}
\newcommand*\SectionNumberBoxSep{\TitleUnderline{\ \ \ }}
\newcommand*\UnnumberedSectionNumberBox
{%
\colorbox{titleblue}
{\strut\hspace{\dimexpr\ht\strutbox+\dp\strutbox}}%
\SectionNumberBoxSep
}
\newcommand*\SectionNumberBox[1]
{%
\colorbox{titleblue}
{%
\begingroup
\color{white}%
\setlength\SectionNumberBoxPad{.5\dimexpr\ht\strutbox+\dp\strutbox}%
\hspace{\SectionNumberBoxPad}%
\strut\csname the#1\endcsname
\hspace{\SectionNumberBoxPad}%
\endgroup
}%
\SectionNumberBoxSep
}
\makeatletter
\newcommand*\setuptitleformat[2]
{%
\expandafter\setuptitleformat@\csname #1\endcsname{#1}{#2}%
}
\newcommand*\setuptitleformat@[3]
{%
\titleformat{#1}
{#3\bfseries\sffamily\color{titleblue}}
{\SectionNumberBox{#2}}
{0pt}
{\TitleUnderline{##1}}%
\titleformat{name=#1,numberless}
{#3\bfseries\sffamily\color{titleblue}}
{\UnnumberedSectionNumberBox}
{0pt}
{\TitleUnderline{##1}}%
}
\makeatother
\setuptitleformat{chapter}{\LARGE}
\setuptitleformat{section}{\Large}
\setuptitleformat{subsection}{\large}
\setuptitleformat{subsubsection}{}
\setcounter{secnumdepth}{3}
\setcounter{chapter}{10}
\begin{document}
\maketitle
\chapter{The First Chapter}
\section{The First Section}
\subsection{The First Subsection}
\subsubsection{The First Subsubsection}
Some text
\begin{thebibliography}{}
\bibitem{}
\end{thebibliography}
\end{document}
Альтернатива 2
Эта версия должна выглядеть идентично в печати, но отображение PDF зависит от просмотрщика (xpdf можно доверять, хотя это связано с тем, что использование ulem
строк построено с использованием небольших сегментов, что может привести к проблемам с наложением на экране). Он нарушает автоматическую расстановку переносов, но сохраняет возможность разрыва строк. Он использует пакет ulem
вместо soul
пакета. ulem
должен быть более надежным, и поэтому \edef
расширение с ним не требуется.
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage[explicit]{titlesec}
\usepackage[normalem]{ulem}
\definecolor{titleblue}{HTML}{4a7aa4}
\title{Sections and Chapters}
\author{Educ}
\date{\today}
\newlength\SectionNumberBoxPad
\newlength\TitleUnderlineSeg
\setlength\TitleUnderlineSeg{.05pt}
\newcommand*\TitleUnderline[1]
{%
\bgroup
\markoverwith
{%
\rule
[-\dimexpr\dp\strutbox+\fboxsep\relax]
{\TitleUnderlineSeg}
{.3ex}%
}%
\ULon{#1}%
}
\newcommand*\SectionNumberBoxSep
{%
\hspace{-\TitleUnderlineSeg}%
\TitleUnderline
{\hspace{\TitleUnderlineSeg}\hspace{\SectionNumberBoxPad}}%
}
\newcommand*\UnnumberedSectionNumberBox
{%
\begingroup
\setlength\SectionNumberBoxPad{.5\dimexpr\ht\strutbox+\dp\strutbox}%
\colorbox{titleblue}
{\strut\hspace{2\SectionNumberBoxPad}}%
\SectionNumberBoxSep
\endgroup
}
\newcommand*\SectionNumberBox[1]
{%
\begingroup
\setlength\SectionNumberBoxPad{.5\dimexpr\ht\strutbox+\dp\strutbox}%
\colorbox{titleblue}
{%
\begingroup
\color{white}%
\hspace{\SectionNumberBoxPad}%
\strut\csname the#1\endcsname
\hspace{\SectionNumberBoxPad}%
\endgroup
}%
\SectionNumberBoxSep
\endgroup
}
\makeatletter
\newcommand*\setuptitleformat[2]
{%
\expandafter\setuptitleformat@\csname #1\endcsname{#1}{#2}%
}
\newcommand*\setuptitleformat@[3]
{%
\titleformat{#1}
{#3\bfseries\sffamily\color{titleblue}}
{\SectionNumberBox{#2}}
{0pt}
{\TitleUnderline{##1}}%
\titleformat{name=#1,numberless}
{#3\bfseries\sffamily\color{titleblue}}
{\UnnumberedSectionNumberBox}
{0pt}
{\TitleUnderline{##1}}%
}
\makeatother
\setuptitleformat{chapter}{\LARGE}
\setuptitleformat{section}{\Large}
\setuptitleformat{subsection}{\large}
\setuptitleformat{subsubsection}{}
\setcounter{secnumdepth}{3}
\setcounter{chapter}{10}
\begin{document}
\maketitle
\chapter{The First Chapter}
\section{The First Section}
\subsection{The First Subsection}
\subsubsection{The First Subsubsection}
Some text
\section
{Really long section name that is really long, so long it takes two rows}
\begin{thebibliography}{}
\bibitem{}
\end{thebibliography}
\end{document}
Линии не совпадают по вертикали с полями номеров секций (проверено при xpdf
увеличении 2000%), несоответствие вызвано растеризацией в Gimp.