Todavía me confundo con titlesec
y tikz
. Por ejemplo, en el siguiente código, ¿cómo coloco el número del capítulo y el título dentro de un rectángulo redondeado con un margen interior personalizado?
\documentclass[12pt, oneside]{book}
\usepackage[paperwidth=30pc, paperheight=36pc, margin=5pc]{geometry}
\usepackage{titlesec}
\titleformat{\chapter}%
[hang]% shape
{\centering\bfseries\large}% format applied to label+text
{\thechapter}% label
{10pt}% horizontal separation between label and title body
{}% before the title body
[]% after the title body
\usepackage{tikz}
\begin{document}
\chapter{Test Chapter Title}
\end{document}
Respuesta1
El truco es que a la parte final del último argumento obligatorio \titleformat
se le pasa el título como argumento.
Tomando prestado el código de Matexmatics
\documentclass[12pt, oneside]{book}
\usepackage[paperwidth=30pc, paperheight=36pc, margin=5pc]{geometry}
\usepackage{tikz}
\usepackage{titlesec}
\titleformat{\chapter}
[block]% shape
{\filcenter\bfseries\large}% format applied to label+text
{}% label
{0pt}% horizontal separation between label and title body
{\maketitleframe{\thechapter}}% before the title body
\titleformat{name=\chapter,numberless}
[block]% shape
{\filcenter\bfseries\large}% format applied to label+text
{}% label
{0pt}% horizontal separation between label and title body
{\maketitleframe{\ignorespaces}}% before the title body
\newcommand{\maketitleframe}[2]{%
\begin{tikzpicture}
\node[draw,rounded corners] {#1 #2};
\end{tikzpicture}% before the title body
}
\begin{document}
\tableofcontents
\chapter{Test Chapter Title}
\end{document}
Es importante definir un formato también para capítulos innumerables. Con \ignorespaces
como primer argumento, se traga el espacio entre #1
y . #2
Nota
\filcenter
y no\centering
- 0pt y no 10pt
Si quieres más espacio entre el número y el título
\documentclass[12pt, oneside]{book}
\usepackage[paperwidth=30pc, paperheight=36pc, margin=5pc,showframe]{geometry}
\usepackage{tikz}
\usepackage{titlesec}
\titleformat{\chapter}
[block]% shape
{\filcenter\bfseries\large}% format applied to label+text
{}% label
{0pt}% horizontal separation between label and title body
{\maketitleframe{\thechapter\hspace{10pt}}}% before the title body
\titleformat{name=\chapter,numberless}
[block]% shape
{\filcenter\bfseries\large}% format applied to label+text
{}% label
{0pt}% horizontal separation between label and title body
{\maketitleframe{}}% before the title body
\newcommand{\maketitleframe}[2]{%
\begin{tikzpicture}
\node[draw,rounded corners] {#1#2};
\end{tikzpicture}% before the title body
}
\begin{document}
\tableofcontents
\chapter{Test Chapter Title}
\end{document}
Respuesta2
Una solución es utilizar la opción explicit
para el paquete titlesec
. Entonces el título se puede obtener con #1
. El comando \thechapter
se mueve al \node
lugar donde #1
se coloca.
\documentclass[12pt, oneside]{book}
\usepackage[paperwidth=30pc, paperheight=36pc, margin=5pc]{geometry}
\usepackage[explicit]{titlesec}
\titleformat{\chapter}%
[hang]% shape
{\centering\bfseries\large}% format applied to label+text
{}% label
{10pt}% horizontal separation between label and title body
{\begin{tikzpicture}\node[draw,rounded corners] {\thechapter{} #1};\end{tikzpicture}}% before the title body
[]% after the title body
\usepackage{tikz}
\begin{document}
\chapter{Test Chapter Title}
\end{document}