我正在尝试在我的文档的标题框内添加章节。
我的最小几乎可以工作的示例是:
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage[left=2cm,right=4cm]{geometry}
\newcommand{\myFrame}[2]{
\begin{tikzpicture}
\node[inner sep=2em, draw=black, text width=\textwidth] (T) {#2};
\node[inner sep=1ex, draw=black,fill=white,
anchor=center,overlay, above of=T, yshift=2.5em] {\tikz \node[fill=black!10, text width=7cm,align=center] {\bf\sffamily#1};};
\end{tikzpicture}
}
\begin{document}
\myFrame{Section 1}{\lipsum[10]}
\end{document}
其结果是:
但是,我的代码不稳定,也就是说,如果我改变文档大小或使用多个 \myFrame,它将不再起作用,因为标题框会改变其位置。
我尝试过 framed 和 mdframed 包,但无法让它们显示我需要的框架。
有人可以给我一些建议,关于如何修复我的代码以使其始终一致地工作或使用其他方法吗?
答案1
不要将tikzpicture
s嵌套在tikzpicture
s 内。
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage[left=2cm,right=4cm]{geometry}
\newcommand{\myFrame}[2]{%
\noindent
\begin{tikzpicture}
\node[inner sep=2em, draw=black, text width=\dimexpr\textwidth-4em-\pgflinewidth\relax] (T) {#2};
\node[inner sep=1ex, draw=white,line width=2pt,fill=black!10,text width=7cm,align=center,font=\bfseries\sffamily,
anchor=center] (H) at (T.north) {#1};
\draw (H.south west) rectangle (H.north east);
\end{tikzpicture}%
\par
}
\begin{document}
\myFrame{Section 1}{\lipsum[10]}
\myFrame{Section 1}{\lipsum[10]}
\myFrame{Section 1}{\lipsum[10]}
\myFrame{Section 1}{\lipsum[10]}
\end{document}
这是一个tcolorbox
彩色的版本。
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{varwidth}
\usepackage[most]{tcolorbox}
\usepackage[left=2cm,right=4cm]{geometry}
\newtcolorbox{myFrame}[2][]{enhanced,
attach boxed title to top center={yshift=-0.25mm-\tcboxedtitleheight/2, yshifttext=2mm-\tcboxedtitleheight/2},arc=0pt,outer arc=0pt,
fonttitle=\bfseries,%minipage boxed title*=-0.7\textwidth,
varwidth boxed title=0.4\linewidth,
colbacktitle=green!45!white,coltitle=green!10!black,colframe=green!50!black,
interior style={top color=yellow!10!white,bottom color=green!10!white},
boxed title style={enhanced,center title,boxrule=0.75mm,arc=0pt,outer arc=0pt,colframe=white,
borderline={0.1mm}{0mm}{green!50!black},
%borderline={0.1mm}{0.75mm}{green!50!black},
interior style={top color=black!10,bottom color=black!10,
middle color=black!10},
drop fuzzy shadow},
title={#2},
breakable,#1}
\begin{document}
\begin{myFrame}{Section 1}
\lipsum[10]
\end{myFrame}
\begin{myFrame}{Section 1}
\lipsum[11]
\end{myFrame}
\end{document}