Estou apenas trabalhando em uma imagem tikz que representa uma carta que você olha em perspectiva. Só consegui perceber isso com a sombra e a perspectiva em Uso de xslant e rotação e sombras.
O objetivo é usar esta carta como modelo para muitas cartas. Então pensei em colocar a escrita com nós no tikz (possibilidade 1) ou com blocos de texto (possibilidade 2) como você pode ver no código. Se funcionar quero definir um comando, por exemplo \address que inclua tudo desde o código do endereço para que só tenha que alterar os nomes e ruas e assim por diante.
Tudo isso está bem, mas agora tenho um problema:
A escrita girada no tikz não é muito boa, porque não girou a linha da fonte, mas apenas as letras. E isso não é muito bonito :) Talvez haja outra maneira de fazer isso? Espero que você possa me ajudar um pouco. Talvez você tenha outra ideia para o problema? Obrigado.
(A possibilidade 2 desta forma não é muito útil, pois não irá girar o bloco, apenas as letras...)
Aqui está um exemplo prático:
\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}
Responder1
Isso é vagamente baseado na minha resposta emPlote quadrados empilhados em 3D com sombra, que emprega o método de Bruno emCisalhamento transforma uma "caixa"
\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}
Alterar os valores \def\myrotate{-10} \def\myslant{.7}
, por exemplo, altera a perspectiva:
Aqui está o método adaptado ao MWE do usuário:
e aqui está sem a coloração
\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}
Uma entrada parbox pode ser implementada definindo
\newcommand\makeply[3]{\mycell{#2}{\parbox[t]{2in}{#1}}{#3}}
No entanto, em ambos os casos { \Longstack
ou \parbox
), esta resposta não é uma perspectiva "verdadeira" com um ponto de fuga, mas sim uma representação isométrica. Assim, embora o texto possa ficar inclinado, ele não ficará mais largo na parte inferior da página.
Responder2
Obviamente, apenas uma resposta parcial, mas você pode alinhar os rótulos dos nós sloped
a uma linha de base. Talvez você possa de alguma forma usar o texto como um rótulo de nó para uma linha inclinada corretamente como seu 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}
No seu exemplo (bonito), você poderia usar algo assim abaixo. Obviamente com white
em vez de red
cor de linha e coordenadas de melhor ajuste.
\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}};