Como posso melhorar o estilo desta seção?

Como posso melhorar o estilo desta seção?

Estou fazendo um template e tentando customizar várias coisas nele, e uma delas é o estilo da seção. Criei um comando que faz um hexágono no lado esquerdo da tela, conforme mostra a imagem abaixo junto com o código:

Estou usando mais pacotes que esse, mas acho que os essenciais para esse problema são esses.

\RequirePackage[%
    top =       2.5cm,    
    bottom =    3.8cm,    
    left =      2cm,    
    right =     2cm,
]{geometry}
\RequirePackage[most]{tcolorbox}
\RequirePackage{pgfplots}
\RequirePackage{graphicx}
\RequirePackage{xcolor}
\RequirePackage{tikz}
\RequirePackage{titletoc}
\RequirePackage{lmodern}
\usetikzlibrary{
    decorations.pathreplacing,
    decorations.pathmorphing,
    decorations.markings,
    shapes.multipart,
    shapes.geometric,
    arrows.meta,
    fadings,
    arrows,
    angles,
    quotes,
    calc,
    3d,
 }
\pgfplotsset{compat=1.18}
\definecolor{ChapterBackground}{HTML}{101010} % PERSONAL BLACK
\definecolor{ChapterForeground}{HTML}{e93820} % PERSONAL ORANGE I

\newcommand{\polygonSection}{%
\begin{tikzpicture}[remember picture, overlay]
\foreach \i in {0.5,...,5}{%
    \node[%
        ChapterBackground,
        regular polygon sides   = 6, 
        regular polygon,
        rounded corners,
        minimum size            = \i cm,
        ultra thick,
        draw,
    ] at ($(current page.north west |- current page text area.west)+(0,0)$) {};
}

\node[%
    regular polygon sides   = 6, 
    rounded corners,
    regular polygon,
    minimum size            = 1.58 cm,
    ultra thick,
    inner sep               = 0,
    fill                    = ChapterForeground!85,
    text                    = ChapterForeground!5,
] at ($(current page.north west |- current page text area.west)+(0,0)$) {};

\end{tikzpicture}}

insira a descrição da imagem aqui

Bem, com este comando tentei usar \titleformat{} do pacote titlesec para estilizar minha seção da seguinte forma:

\titleformat{\section}[display]
{\normalfont\bfseries\color{ChapterBackground}}{}{1em}
{\llap{
\polygonSection\hspace{-6pt}}\huge\textsc}[]

insira a descrição da imagem aqui

Porém, gostaria de alinhar o título com o hexágono e adicionar um pequeno espaço entre os dois, mas não encontrei nenhuma maneira de fazer isso e estou recebendo a seguinte mensagem de erro:

Erro de pacote pgf: Nenhuma forma chamada `área de texto da página atual' é conhecida.

Porém, se eu tirar essa parte do código, ela não fica do jeito que eu quero. Além disso, usando o pacote tikzpagenodes, os polígonos não são mais separados por seções, mas sim por páginas, o que não é o que eu quero.

É isso, se alguém puder me ajudar, seria ótimo.

Responder1

Não tenho certeza se é uma boa ideia recuar o título da seção para que comece mais à direita do que o corpo do texto. Talvez você deva aumentar a margem esquerda. De qualquer forma, o seguinte deve fazer o que você deseja:

\documentclass{article}

\RequirePackage[%
    top    = 2.5cm,    
    bottom = 3.8cm,    
    left   =   2cm,    
    right  =   2cm,
]{geometry}

\RequirePackage{tikz}
\usetikzlibrary{shapes.geometric}

\definecolor{ChapterBackground}{HTML}{101010} % PERSONAL BLACK
\definecolor{ChapterForeground}{HTML}{e93820} % PERSONAL ORANGE I

\newcommand{\polygonSection}{%
\begin{tikzpicture}[remember picture, overlay] 
\node[%
    regular polygon sides   = 6, 
    rounded corners,
    regular polygon,
    minimum size            = 1.58cm,
    ultra thick,
    inner sep               = 0pt,
    fill                    = ChapterForeground!85,
    anchor                  = south
] at (current page.north west |- 0,0) (red polygon) {};
\foreach \i in {2.5,...,4.5}{%
    \node[%
        ChapterBackground,
        regular polygon sides   = 6, 
        regular polygon,
        rounded corners,
        minimum size            = \i cm,
        ultra thick,
        draw,
    ] at (red polygon) {};
}
\end{tikzpicture}}

\RequirePackage{titlesec}
\titleformat{\section}[display]
    {\normalfont\bfseries\color{ChapterBackground}\huge}{}{0pt}
    {\polygonSection\hspace{1em}}

\usepackage{lipsum}

\begin{document}

\section{Section}

\lipsum[1]

\end{document}

insira a descrição da imagem aqui

Como é que isso funciona? O tikzpictureque adicionamos ao título da seção primeiro coloca o hexágono vermelho que está ancorado, de modo que fique horizontalmente na linha de base tikzpicturee verticalmente na borda esquerda do papel. Os outros hexágonos (dos quais você só precisa de três, então ajustei a \foreachlista) são então centralizados em torno deste hexágono vermelho.

Você pode ajustar o espaçamento inserindo algum espaço usando \titleformat{\section}, mas como eu disse no início, talvez seja melhor aumentar totalmente a margem esquerda do seu documento.

Caso queira centralizar os hexágonos verticalmente, retire anchor = southdas opções do hexágono vermelho e adicione baseline = -0.5exnas opções do tikzpictureambiente.


Algumas observações: tcolorboxcargas tikz, pgfplotstambém cargas tikze tikzcargas xcolor. Portanto, não é necessário carregar todos esses pacotes juntos. Você também deve pensar sobre qual TikBibliotecas Z que você realmente precisa. Para o acima, só shapes.geometricé necessário.

informação relacionada