Titlesec con tikz

Titlesec con tikz

Todavía me confundo con titlesecy 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 \titleformatse 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}

ingrese la descripción de la imagen aquí

Es importante definir un formato también para capítulos innumerables. Con \ignorespacescomo primer argumento, se traga el espacio entre #1y . #2Nota

  1. \filcentery no\centering
  2. 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}

ingrese la descripción de la imagen aquí

Respuesta2

Una solución es utilizar la opción explicitpara el paquete titlesec. Entonces el título se puede obtener con #1. El comando \thechapterse mueve al \nodelugar donde #1se coloca.

ingrese la descripción de la imagen aquí

\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}

información relacionada