Titlesec com tikz

Titlesec com tikz

Eu ainda me confundo com titlesece tikz. Por exemplo, no código abaixo, como coloco o número do capítulo e o título dentro de um retângulo arredondado com uma margem interna personalizada?

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

Responder1

O truque é que a parte final do último argumento obrigatório \titleformatreceba o título como argumento.

Pegando emprestado o código da 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}

insira a descrição da imagem aqui

É importante definir um formato também para inúmeros capítulos. Tendo \ignorespacescomo primeiro argumento, o espaço entre #1e #2é engolido. Observação

  1. \filcentere não\centering
  2. 0pt e não 10pt

Se você quiser mais espaço entre o número e o 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}

insira a descrição da imagem aqui

Responder2

Uma solução é usar a opção explicitdo pacote titlesec. Então o título pode ser obtido com #1. O comando \thechapteré movido para o \nodelocal onde #1está colocado.

insira a descrição da imagem aqui

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

informação relacionada