请问tikz中如何让像平行四边形这样的非规则图形随着里面文字内容的增多而伸缩长度以适应多出来的文字内容?如下面这个标题盒子中的平行四边形里面,我想填充内容进去,但是它没法伸缩,导致内容一多就溢出,所以想请问,应该如何让latex计算内容宽度并将宽度值传到要node的非规则图形的长度?
\documentclass[12pt,fontset=ubuntu]{ctexbook}
\usepackage{zhlipsum}
\usepackage{tikz}
\usepackage[most]{tcolorbox}
\usetikzlibrary{shadows,calc,positioning}
\newcommand{\parallelogram}[4][fill,color=teal]{
\path[#1]
(#3)--([xshift=#2]#3)--(#4)--([xshift=-#2]#4)--cycle;
}
\newtcolorbox{wwexample}[2][]{%
arc=0mm,
breakable,drop fuzzy shadow=black!20!white,
enhanced,
colback=gray!10,
boxrule=0pt,
top=10mm,
fontupper=\normalsize,
overlay unbroken = {%
\node[] at ([xshift=3.2cm,yshift=5pt]frame.north west) {
\begin{tikzpicture}
\parallelogram[fill,color=magenta]{4pt}{0,4pt}{1.5pt,0}
\end{tikzpicture}
};
\fill[magenta,drop shadow={opacity=.5, shadow xshift=0.02cm,shadow yshift=-0.02cm}]
([xshift=-21pt,yshift=-5pt]frame.north west)--([xshift=-15pt,yshift=-5pt]frame.north west)--([xshift=-21pt,yshift=-1.5cm+25pt]frame.north west)--([xshift=-27pt,yshift=-1.5cm+25pt]frame.north west)--cycle;
\fill[magenta,drop shadow={opacity=.5, shadow yshift=-0.05cm}]
(frame.north west) coordinate (ln)--([xshift=3cm]frame.north west) --([xshift=2.5cm,yshift=-1.5cm+20pt]frame.north west) coordinate (rs)--([xshift=2.5cm-3cm,yshift=-1.5cm+20pt]frame.north west)--cycle;
\node[text=white,font=\bfseries] at ($(ln)!0.5!(rs)$) {Example ~ 1.1.13};
\fill[white,drop shadow={opacity=.5, shadow xshift=0.05cm,shadow yshift=-0.05cm}]
([xshift=3cm]frame.north west) coordinate (lnii)--([xshift=7cm]frame.north west)--([xshift=6.5cm,yshift=-1.5cm+20pt]frame.north west) coordinate (rsii)--([xshift=2.5cm,yshift=-1.5cm+20pt]frame.north west)--cycle;
\node[text=red,font=\bfseries] at ($(lnii)!0.5!(rsii)$) {#2};
\fill[magenta,drop shadow={opacity=.5, shadow xshift=0.05cm,shadow yshift=-0.05cm}]
([xshift=-5pt,yshift=10pt]frame.north west) coordinate (nw)--([xshift=15pt]nw)--([xshift=-5pt,yshift=-1.5cm]nw)--([xshift=-20pt,yshift=-1.5cm]nw)--cycle;
\node[] at ([xshift=2.7cm,yshift=-5pt]frame.north west) {
\begin{tikzpicture}
\parallelogram[fill,color=white]{4pt}{0,4pt}{1.5pt,0}
\end{tikzpicture}
};
\node[] at ([xshift=6.7cm,yshift=-5pt]frame.north west) {
\begin{tikzpicture}
\parallelogram[fill,color=magenta]{4pt}{0,4pt}{1.5pt,0}
\end{tikzpicture}
};
}
#1}
\begin{document}
\begin{wwexample}{测试内容}
\zhlipsum[1]
\end{wwexample}
\end{document}
建议能整理好MWE来提问,不过给你一个简单的回复,希望能有点用。
\documentclass{ctexart}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric} % 几何形状
% 输入/输出框样式
\tikzset{
io/.style={draw,
trapezium, % 平行四边形
trapezium left angle=70, % 平行四边形左倾角
trapezium right angle=110, % 平行四边形右倾角
}
}
\begin{document}
\begin{tikzpicture}
\node[io] at (0,0) {知的};
\node[io] at (0,1) {长长的};
\node[io] at (0,2) {长长长长长长长长知的};
\end{tikzpicture}
\end{document}
thanks!这对于平行四边形至少是起作用了,谢谢
已经整理好了MWE,请问如何才能将内容所占用的宽度数值传入到xshift中去,从而让系统自动适应标题长度?感谢您的回答.
@u45041 可以参考一下这两个链接:
我就不研究你的代码了(比较懒)
@u78 谢谢了????