经过大量的反复试验后,我终于将我想要的文本放入了这个多面体的 1 号面中:
\documentclass{article}
\usepackage[margin=0.5cm]{geometry}
\usepackage{tikz}
\begin{document}
\usetikzlibrary {folding}
\begin{tikzpicture}[scale=10]
\pic [
folding line length=6mm,
transform shape,
face 1= { \node[text width=2.9cm,text height=11pt,scale=0.2,inner sep=10pt] {
{\bf Cayendo en las redes de Venecia}\\
~\\
JJ Merelo};
},
face 2= { \node{ Tibi }; },
face 3= { \node{\tiny Marce}; },
face 4= { \node{\tiny Evangelista}; },
face 5= { \node{\tiny Meus}; },
face 6= { \node[anchor=center] {\includegraphics[width=0.6cm]{dogos} };}
]
{ cube folding };
\end{tikzpicture}
\end{document}
结果是:
从这里开始的最小增量改进是避免文本太靠近折叠边缘,但inner sep
似乎效果不佳。但是,我想要的是某种惯用的方式,让文本真正适合相应的面。现在,我必须调整 3 个不同的参数:和text width
。是否有一个命令可以将节点适合形状,或者可以使用一个“比例”来适应?例如,节点宽度是否会存储在像 这样的变量中?text height
scale
\textheight
答案1
以下是一些可以使用的按键:
scale text = {<text>}{<width>}
缩放节点,使单行 (!) 和inner xsep
适合给定的宽度。该min
函数确保文本在适合自身时不会缩放。需要\tiny
将 移出节点,以便它更正常工作。scale text width = {<scale>}{<width>}
设置文本宽度并缩放节点,以便<width>
缩放时为节点的总宽度。再次inner xsep
包括。
在两种情况下,inner xsep
都可以使用该值来改变填充。
代码
\documentclass[tikz]{standalone}
%\documentclass{article}
%\usepackage[margin=0.5cm]{geometry}
%\usepackage{tikz}
\usetikzlibrary {folding}
\tikzset{
scale text width/.style 2 args={
text width={(#2-2*(\pgfkeysvalueof{/pgf/inner xsep}))/(#1)},
scale={#1}},
scale text/.style 2 args={
node contents={#1},
scale={min(1,(#2)/(width("{#1}")+2*(\pgfkeysvalueof{/pgf/inner xsep})}}}
\begin{document}
\begin{tikzpicture}[scale=10]
\pic [
folding line length=6mm,
transform shape,
inner sep=+.15em,
face 1= { \node[scale text width={.2}{6mm}] {
\textbf{Cayendo en las redes de Venecia}\\[1.3em]JJ Merelo}; },
face 2= { \node[scale text={Tibi}{6mm}]; },
face 3= { \tiny \node[scale text={Marce}{6mm}]; },
face 4= { \tiny \node[scale text={Evangelista}{6mm}]; },
face 5= { \tiny \node[scale text={Meus}{6mm}]; },
face 6= { \node{\includegraphics[width=0.6cm]{example-image} };}
]
{ cube folding };
\end{tikzpicture}
\end{document}