我怎样才能使这一部分的风格变得更好?

我怎样才能使这一部分的风格变得更好?

我正在制作一个模板并尝试自定义其中的几项内容,其中一项是部分样式。我创建了一个命令,在屏幕左侧创建一个六边形,如下图所示,并附有代码:

我使用的包比这还多,但我认为解决这个问题的关键包是这些。

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

在此处输入图片描述

好吧,通过这个命令,我尝试使用 titlesec 包中的 \titleformat{} 来设置我的部分的样式,如下所示:

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

在此处输入图片描述

但是,我想将标题与六边形对齐,并在两者之间添加一个小的空间,但我还没有找到任何方法来做到这一点,并且我收到以下错误消息:

包 pgf 错误:没有已知名为“当前页面文本区域”的形状。

但是,如果我从代码中删除这部分,它看起来就不是我想要的样子了。此外,使用 tikzpagenodes 包,多边形不再按部分分隔,而是按页面分隔,这不是我想要的。

就是这样,如果有人能帮助我,那就太好了。

答案1

我不确定缩进章节标题使其比正文更靠右是否是个好主意。也许你应该增加左边距。无论如何,以下内容应该可以满足您的要求:

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

在此处输入图片描述

这是如何工作的?tikzpicture我们添加到章节标题的首先放置锚定的红色六边形,使其水平位于基线上,tikzpicture垂直位于纸张的左边缘。然后,其他六边形(实际上只需要三个,因此我调整了列表\foreach)围绕这个红色六边形居中。

您可以通过使用 插入一些空格来调整间距\titleformat{\section},但正如我在开始时所说的那样,最好完全增加文档的左边距。

如果要使六边形垂直居中,请anchor = south从红色六边形的选项中删除并添加baseline = -0.5ex到环境选项中tikzpicture


一些注释:tcolorboxloads tikzpgfplots还有 loadstikztikzloadsxcolor。因此,没有必要将所有这些包一起加载。您还应该真正考虑一下哪个Ti您真正需要的 Z 库。对于上述内容,只shapes.geometric需要。

相关内容