Eu ainda me confundo com titlesec
e 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 \titleformat
receba 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}
É importante definir um formato também para inúmeros capítulos. Tendo \ignorespaces
como primeiro argumento, o espaço entre #1
e #2
é engolido. Observação
\filcenter
e não\centering
- 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}
Responder2
Uma solução é usar a opção explicit
do pacote titlesec
. Então o título pode ser obtido com #1
. O comando \thechapter
é movido para o \node
local onde #1
está colocado.
\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}