Я хотел бы поместить номер раздела в цветную рамку в заголовке, но когда я использую ссылку, я хочу, чтобы был напечатан только номер раздела, а не цветная рамка...
я использовал
\renewcommand{\thesection}{\colorbox{blue}{\arabic{section}.}}
и это работает для заголовка, но также помещает цветной прямоугольник в основной текст, когда я цитирую раздел с \ref{sec}
. Есть ли решение изменить нумерацию раздела независимо в заголовке и ссылке?
решение1
Этот тип форматирования можно выполнить с помощью titlesec
пакета. Он предоставляет \titleformat
команду, которая позволяет форматировать заголовки разделов или других частей документа, не затрагивая команды встречных ссылок (например, \thesection
). Смотритепакет документацииБольше подробностей.
Для цветных рамок вокруг номеров разделов подойдет следующий пример.
\documentclass{article}
\usepackage{color}
\usepackage{titlesec}
\titleformat{\section}{\Large\bfseries}{\colorbox{blue}{\thesection.}}{1em}{}
\begin{document}
\section{First section}
\label{sec1}
Test paragraph.
\section{Second section}
Test paragraph with reference to section \ref{sec1}.
\end{document}
решение2
Следующий минимальный пример обновляет способ печати номера секционного блока как части заголовка, вводя специальный механизм форматирования. Если не указан (новый) специальный формат (на основе секционного блока), по умолчанию используется \csname the#1\endcsname\quad
, который в любом случае является значением по умолчанию в обычных классах документов.
\documentclass{article}
\usepackage{xcolor}
\newcommand{\thesectioncntformat}{\colorbox{blue}{\thesection.}\quad}
%\newcommand{\thesubsectioncntformat}{\colorbox{red}{\thesubsection.}\quad}
%\newcommand{\thesubsubsectioncntformat}{\colorbox{green}{\thesubsubsection.}\quad}
\makeatletter
\renewcommand{\@seccntformat}[1]{%
\ifcsname the#1cntformat\endcsname
\csname the#1cntformat\endcsname % Special sectional unit number formatting
\else
\csname the#1\endcsname\quad % Default if no special format exists
\fi
}
\makeatother
\begin{document}
\tableofcontents
\bigskip
See Section~\ref{sec:section}, Subsection~\ref{sec:subsection} or Subsubsection~\ref{sec:subsubsection}.
\section{A section}\label{sec:section}
\subsection{A subsection}\label{sec:subsection}
\subsubsection{A subsubsection}\label{sec:subsubsection}
\end{document}