使用 tikz 将文本放在折叠多面体的表面

使用 tikz 将文本放在折叠多面体的表面

经过大量的反复试验后,我终于将我想要的文本放入了这个多面体的 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 heightscale\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}

输出

在此处输入图片描述

相关内容