我想制作该章节的图像叠加层。到目前为止,我找到了此代码,如果我在定义中直接指定图像,它就可以工作:
\newcommand\chapterlabel{}
\titleformat{\chapter}
{\gdef\chapterlabel{}
\normalfont\sffamily\Huge\bfseries\scshape}
{\gdef\chapterlabel{\thechapter\ }}{0pt}
{\begin{tikzpicture}[remember picture,overlay]
\node[below right=4.8cm and 0cm of current page.north east] (a)
{\begin{tikzpicture}[remember picture, overlay]
\fill[fill overzoom image=
!!!!!!!!!!!!HERE IS THE IMAGE NAME!!!!!!!!!!!!!!
]
(current page.north west) rectangle
(a);
\node[below right=2.5cm and 2cm of current page.north
west,color=blue]
{\color{white}\chapterlabel#1};
\end{tikzpicture}
};
\end{tikzpicture}
}
但是,我不知道如何将其制作成宏,也就是说,我想在图片名称中放入“#2”作为占位符,然后稍后我可以传递自定义图像名称作为参数。
答案1
我不知道你希望输出是什么样子,因为你没有提供一个最小的工作示例,而只是提供了一个代码片段。无论如何,你应该避免嵌套tikzpicture
环境。
正如我在评论中所建议的那样,为什么不直接创建一个自定义命令\myimagename
来存储当前图像的名称呢?同样的方法也可以用于章节标签,但是,从您的代码中我看不出您打算如何使用它。
梅威瑟:
\documentclass{report}
\usepackage{titlesec, tikz, tikzfill}
\usetikzlibrary{positioning, shadows}
\newcommand\mychapterlabel{}
\newcommand\myimagename{example-image-a}
\titleformat{\chapter}
{\normalfont\sffamily\Huge\bfseries\scshape}
{\gdef\chapterlabel{\thechapter\ }}{0pt}
{\begin{tikzpicture}[remember picture, overlay]
\coordinate[below right=4.8cm and 0cm of current page.north east] (a);
\fill[fill overzoom image=\myimagename] (current page.north west) rectangle (a);
\node[below right=2.5cm and 2cm of current page.north west, color=blue]
{\color{white}\chapterlabel\mychapterlabel};
\end{tikzpicture}}
\begin{document}
\renewcommand\mychapterlabel{Foo}
\chapter{One}
\renewcommand\mychapterlabel{Bar}
\renewcommand\myimagename{example-image-b}
\chapter{Two}
\end{document}