我正在制作一个模板并尝试自定义其中的几项内容,其中一项是部分样式。我创建了一个命令,在屏幕左侧创建一个六边形,如下图所示,并附有代码:
我使用的包比这还多,但我认为解决这个问题的关键包是这些。
\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
。
一些注释:tcolorbox
loads tikz
,pgfplots
还有 loadstikz
和tikz
loadsxcolor
。因此,没有必要将所有这些包一起加载。您还应该真正考虑一下哪个Ti钾您真正需要的 Z 库。对于上述内容,只shapes.geometric
需要。