私は、遠近法で見る文字を表す 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}};