Я просто работаю над tikzpicture, которая представляет собой букву, на которую вы смотрите в перспективе. Мне только что удалось реализовать это с тенью и перспективой в разделе Использование xslant и вращения и теней.
Цель состоит в том, чтобы использовать это письмо как шаблон для многих писем. Поэтому я просто подумал о размещении письма либо с узлами в tikz (возможность 1), либо с текстовыми блоками (возможность 2), как вы можете видеть в коде. Если это сработает, я хочу определить команду, например \address, которая включает все из кода адреса, так что мне нужно будет изменить только имена и улицы и так далее.
Все это прекрасно, но теперь у меня возникла проблема:
Повернутое письмо в tikz не очень хорошо, потому что оно не поворачивает строку шрифта, а только буквы. И это не очень красиво :) Может быть, есть другой способ сделать это? Надеюсь, вы сможете мне немного помочь. Может быть, у вас есть другая идея для решения проблемы? Спасибо.
(Возможность 2 в этом случае не очень полезна, поскольку она не вращает блок, а только буквы...)
Вот рабочий пример:
\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}
решение1
Это в общих чертах основано на моем ответе наНарисуйте 3D-квадраты, сложенные стопкой, с тенью, который использует метод Бруно вСдвиг преобразует «коробку»
\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}
\def\myrotate{-10} \def\myslant{.7}
Например, изменение значений изменяет перспективу:
Вот метод, адаптированный к MWE пользователя:
и вот он со снятой окраской
\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}
Вход parbox может быть реализован путем определения
\newcommand\makeply[3]{\mycell{#2}{\parbox[t]{2in}{#1}}{#3}}
Однако в любом случае { \Longstack
или \parbox
), этот ответ не является "истинной" перспективой с точкой схода, а скорее изометрической интерпретацией. Таким образом, хотя текст может быть наклонным, он не станет шире к низу страницы.
решение2
Очевидно, что это лишь частичный ответ, но вы можете выровнять метки узлов sloped
по базовой линии. Может быть, вы можете как-то использовать текст в качестве метки узла для линии, которая наклонена правильно, как ваш текст.
\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}
В вашем (красиво выглядящем) примере вы могли бы использовать что-то вроде этого ниже. Очевидно, с white
вместо red
цвета линии и более подходящими координатами.
\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}};