Me gustaría poner el número de mi sección en un cuadro de color en el título, pero cuando uso una referencia, solo quiero que se imprima el número de la sección y no el cuadro de color...
solía
\renewcommand{\thesection}{\colorbox{blue}{\arabic{section}.}}
y funciona para el título, pero también coloca el cuadro de color en el texto principal cuando cito la sección con \ref{sec}
. ¿Existe alguna solución para cambiar la numeración de la sección de forma independiente en el título y la referencia?
Respuesta1
Este tipo de formateo se puede realizar utilizando el titlesec
paquete. Proporciona un \titleformat
comando que permite formatear el título de secciones u otras partes de un documento, y sin afectar los comandos de contrarreferencia (como \thesection
). Ver eldocumentación del paquetepara más detalles.
Para los cuadros de colores alrededor de los números de sección, el siguiente ejemplo debería funcionar.
\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}
Respuesta2
El siguiente ejemplo mínimo actualiza la forma en que se imprime el número de unidad seccional como parte del título, introduciendo un mecanismo de formato especial. Si no se especifica ningún formato especial (nuevo) (por unidad seccional), el valor predeterminado es \csname the#1\endcsname\quad
, que de todos modos es el valor predeterminado en las clases de documentos regulares.
\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}