Tikz - Carta en perspectiva, escritura rotada

Tikz - Carta en perspectiva, escritura rotada

Sólo estoy trabajando en una imagen tikz que representa una letra que se mira en perspectiva. Me las arreglé para darme cuenta de esto con la sombra y la perspectiva en Uso de xslant y rotación y sombras.

El objetivo es utilizar esta carta como modelo para muchas cartas. Así que pensé en colocar la escritura con nodos en tikz (posibilidad 1) o con bloques de texto (posibilidad 2) como puedes ver en el código. Si eso funciona, quiero definir un comando, por ejemplo \address, que incluye todo, desde el código de la dirección, de modo que solo tenga que cambiar los nombres y las calles, etc.

Todo eso está bastante bien, pero ahora tengo un problema:

La escritura rotada en tikz no es realmente buena, porque no rota la línea de la fuente sino solo las letras. Y eso no es realmente bonito :) ¿Quizás haya otra forma de hacer esto? Espero que puedas ayudarme un poco. ¿Quizás tengas otra idea para el problema? Gracias.

(La posibilidad 2 de esta manera no es muy útil, porque no rotará el bloque, solo las letras...)

Aquí hay un ejemplo práctico:

\documentclass[a4paper]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tabu}
\usepackage{eurosym}
\usepackage{icomma}
\usepackage[absolute,overlay]{textpos}
\usepackage{pgf, tikz, pgfplots}
\usepackage{rotating}
\usepackage{graphicx}

\usetikzlibrary{
            arrows,
            shapes,
            shadows.blur,
            positioning,
            calc,
            intersections,
            decorations.text,
            backgrounds,
            plotmarks,
            shadings
}

\begin{document}
\begin{tikzpicture}[rotate=-3,xslant=0.1,scale=0.7,every node/.style={xslant=0.1,transform shape,rotate=1}]
\fill [color=black!20!white,opacity=0.5] (0.15,-2.15) -- (13.15,-2.15) -- (15.15,-20.15) -- (0.15,-20.15) -- cycle;
\draw [color=black!30, fill=white] (0,-2) -- (13,-2) -- (15,-20) -- (7.3,-20) arc (270:220:9.9cm and 3.5cm) arc (-20:0:4cm and 15cm) -- cycle;
%possibility 1:
\node at (1.5,-5.2) [right] {\scriptsize{XXX YYY}};
\node at (1.5,-5.6) [right] {\scriptsize{ZZZ Street}};
\node at (1.5,-6) [right] {\scriptsize{012345 AAAAA}};
\end{tikzpicture}
%possibility 2:
\begin{textblock*}{10cm}(7cm,7cm)
\begin{rotate}{-3}
\parbox[t]{10cm}{Lorem Ipsum\\ Blab\\Bla\\bla\\D\\D\\D\\D\\D}
\end{rotate}
\end{textblock*}
\end{document}

Respuesta1

Esto se basa libremente en mi respuesta enTrazar cuadrados apilados en 3D con sombra, que emplea el método de Bruno enCortar transformar una "caja"

\documentclass{article}
\usepackage{xcolor,graphicx}
\usepackage[usestackEOL]{stackengine}
\newsavebox{\foobox}
\newcommand{\slantbox}[2][.5]{\mbox{%
        \sbox{\foobox}{#2}%
        \hskip\wd\foobox
        \pdfsave
        \pdfsetmatrix{1 0 #1 1}%
        \llap{\usebox{\foobox}}%
        \pdfrestore
}}
\def\mycell#1#2{\fcolorbox{black!50}{#1}{#2 }}
\def\makeply#1#2{\mycell{#2}{\Longstack[l]{#1}}}
\def\perspective#1#2{%
\rotatebox{\myrotate}{\slantbox[\myslant]{%
  \makeply{#1}{#2}}}
}
\begin{document}
\def\myrotate{-5} \def\myslant{.3} 
\perspective{XXX YYY\\ZZZ Street\\012345 AAAAA}{gray!30}

This is back to normal text.
\end{document}

ingrese la descripción de la imagen aquí

Cambiar los valores \def\myrotate{-10} \def\myslant{.7}, por ejemplo, cambia la perspectiva:

ingrese la descripción de la imagen aquí

Aquí está el método adaptado al MWE del usuario:

ingrese la descripción de la imagen aquí

y aqui esta sin el colorante

\documentclass[a4paper]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tabu}
\usepackage{eurosym}
\usepackage{icomma}
\usepackage[absolute,overlay]{textpos}
\usepackage{pgf, tikz, pgfplots}
\usepackage{rotating}
\usepackage{graphicx}

\usetikzlibrary{
            arrows,
            shapes,
            shadows.blur,
            positioning,
            calc,
            intersections,
            decorations.text,
            backgrounds,
            plotmarks,
            shadings
}
\usepackage{xcolor,graphicx}
\usepackage[usestackEOL]{stackengine}
\newsavebox{\foobox}
\newcommand{\slantbox}[2][.5]{\mbox{%
        \sbox{\foobox}{#2}%
        \hskip\wd\foobox
        \pdfsave
        \pdfsetmatrix{1 0 #1 1}%
        \llap{\usebox{\foobox}}%
        \pdfrestore
}}
\def\mycell#1#2#3{\fcolorbox{#3}{#1}{#2 }}
\newcommand\makeply[3]{\mycell{#2}{\Longunderstack[l]{#1}}{#3}}
\newcommand\perspective[3][black!30]{%
\rotatebox{\myrotate}{\slantbox[\myslant]{%
  \makeply{#2}{#3}{#1}}}
}
\begin{document}
\def\myrotate{1} \def\myslant{.1} 

\begin{tikzpicture}[rotate=-3,xslant=0.1,scale=0.7,every node/.style={xslant=0.1,transform shape,rotate=1}]
\fill [color=black!20!white,opacity=0.5] (0.15,-2.15) -- (13.15,-2.15) -- (15.15,-20.15) -- (0.15,-20.15) -- cycle;
\draw [color=black!30, fill=white] (0,-2) -- (13,-2) -- (15,-20) -- (7.3,-20) arc (270:220:9.9cm and 3.5cm) arc (-20:0:4cm and 15cm) -- cycle;
%possibility 1:
\node at (1.5,-5.2) [right] {\scriptsize{XXX YYY}};
\node at (1.5,-5.6) [right] {\scriptsize{ZZZ Street}};
\node at (1.5,-6) [right] {\scriptsize{012345 AAAAA}};
\end{tikzpicture}
%possibility 2:
\begin{textblock*}{10cm}(7cm,7cm)
\begin{rotate}{-3}
\perspective[white]{Lorem Ipsum\\ Blab\\Bla\\bla\\D\\D\\D\\D\\D}{white}
\end{rotate}
\end{textblock*}
\end{document}

ingrese la descripción de la imagen aquí

Una entrada parbox podría implementarse definiendo

\newcommand\makeply[3]{\mycell{#2}{\parbox[t]{2in}{#1}}{#3}}

Sin embargo, en cualquier caso { \Longstacko \parbox), esta respuesta no es una perspectiva "verdadera" con un punto de fuga, sino más bien una interpretación isométrica. Por lo tanto, si bien el texto puede estar inclinado, no se ensanchará hacia la parte inferior de la página.

Respuesta2

Obviamente, solo es una respuesta parcial, pero puede alinear las etiquetas de los nodos slopedcon una línea de base. Tal vez puedas usar de alguna manera el texto como etiqueta de nodo para una línea que tenga la pendiente correcta como tu texto.

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \fill (0,0) circle (0.1);
    \fill (3,-1) circle (0.1);
    \draw (0,0) -- (3,-1) node [midway, above, sloped] {Sloped text};
\end{tikzpicture}
\end{document}

captura de pantalla

En su (bonito) ejemplo, podría usar algo como esto a continuación. Obviamente con un color de línea whiteen lugar de redun color de línea y coordenadas más ajustadas.

\draw [red] (1.6,-5.2) -- (4.05,-4) node [black, midway, sloped] {\scriptsize{XXX YYY}} ;
\draw [red] (1.6,-5.6) -- (4,-5.5) node [black, midway, sloped] {\scriptsize{ZZZ Street}};
\draw [red] (1.6,-6)  -- (3.95,-7.05) node [black, midway, sloped] {\scriptsize{012345 AAAAA}};

información relacionada