-
Notifications
You must be signed in to change notification settings - Fork 0
/
trim2.tex
89 lines (86 loc) · 3.38 KB
/
trim2.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
%<*standalone>
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{adjustbox}
\newsavebox\mybox
\begin{document}
%</standalone>
% Diagram of the TeX box model and its dimensions
% Copyright (C) 2001 by Martin Scharrer <martin.scharrer@web.de>, Nov 12th 2011
% This is free code under the LPPL v1.3 or later version OR the CC BY-SA 3.0
% Save example text in box
\def\text{\sffamily\scalebox{10}{Xy}}
\sbox\mybox{\sffamily\color{black!25}\scalebox{10}{Xy}}
\def\HEIGHT{\ht\mybox}
\def\WIDTH{\wd\mybox}
\def\DEPTH{\dp\mybox}
\def\LLX{.15\WIDTH}
\def\LLY{\DEPTH+.15\HEIGHT}
\def\URX{.15\WIDTH}
\def\URY{.25\HEIGHT}
%
%\usebox\mybox
%\rlap{\trimbox{{\LLX} {\LLY} {\URX} {\URY}}{\usebox\mybox}}\clipbox{{\LLX} {\LLY} {\URX} {\URY}}{\color{blue}{\text}}
\begin{tikzpicture}[font=\sffamily,>=latex]
% Extensions lines for dimensions (drawn here to be below other material)
\draw [gray,thin]
(0,0) -- +(-3.5ex,0)
(0,\HEIGHT) -- +(-3.5ex,0)
(0,-\DEPTH) -- +(-3.5ex,0)
(\WIDTH,\HEIGHT) -- +(3.5ex,0)
(\WIDTH,-\DEPTH) -- +(3.5ex,0)
(0,-\DEPTH) -- +(0,-3.5ex)
(\WIDTH,-\DEPTH) -- +(0,-3.5ex)
;
% Text node:
\node [inner sep=0pt,anchor=base west] {\usebox\mybox};
% Baseline
\draw (0,0) -- (\WIDTH,0);% node [above,midway] {baseline};
%\draw [<-,shorten <=2pt] (0,0) -- (2ex,-2ex) -- +(.5ex,0) node [right=-0.5ex] {origin};
% Dimensions
\draw [->] (-2.5ex,0) -- +(0,-\DEPTH) node [midway,left] {depth};
\draw [->] (-2.5ex,0) -- +(0, \HEIGHT) node [midway,left] {height};
\draw [<->] (\WIDTH,-\DEPTH) ++(2.5ex,0) -- +(0,\DEPTH+\HEIGHT) node [midway,right] {totalheight};
\draw [<->] (0,-\DEPTH) ++(0,-2.5ex) -- +(\WIDTH,0) node [midway,below] {width};
\fill (-2.5ex,0) circle (.5pt);
\begin{scope}[blue] %,every node/.append style={inner sep=2pt}]
\begin{scope}
\clip ([shift={(\LLX,\LLY)}]0,-\DEPTH) rectangle ([shift={(-\URX,-\URY)}]\WIDTH,\HEIGHT);
\node [inner sep=0pt,anchor=base west,color=blue!50!white] {\text};
\end{scope}
%\draw [->,.!45] (\WIDTH,\HEIGHT) -- ++(-\URX,-\URY);
%\draw [->,.!45] (0,-\DEPTH) -- ++(\LLX,\LLY);
\draw ([shift={(\LLX,\LLY)}]0,-\DEPTH) rectangle ([shift={(-\URX,-\URY)}]\WIDTH,\HEIGHT);
\draw [->] (\LLX,-\DEPTH) -- ++(0,\LLY) node [right,midway] {\scriptsize lly};
\draw [->] (0,-\DEPTH+\LLY) -- ++(\LLX,0) node [above,midway] {\scriptsize llx};
\draw (\LLX,-\DEPTH+\LLY) -- ([shift={(-\URX,0)}]\WIDTH,-\DEPTH+\LLY);
\draw [->] (\LLX+.2\WIDTH,-\DEPTH+\LLY) -- (\LLX+.2\WIDTH,0) node [right,midway] {\scriptsize moves down};
\path [fill=white,draw] (\LLX,-\DEPTH+\LLY) circle (1pt);
\draw [->]
([shift={(-\URX,0)}]\WIDTH,\HEIGHT) --
([shift={(-\URX,-\URY)}]\WIDTH,\HEIGHT)
node [left,midway] {\scriptsize ury}
;
\draw [->]
([shift={(0,-\URY)}]\WIDTH,\HEIGHT) --
([shift={(-\URX,-\URY)}]\WIDTH,\HEIGHT)
node [below,midway] {\scriptsize urx}
;
\end{scope}
% Box
\draw [thick] (0,-\DEPTH) rectangle (\WIDTH,\HEIGHT);
% Origin
\path [fill=white,draw=black] (0,0) circle (1pt);
% Center inner box
\path let
\p1 = (current bounding box.south west),
\p2 = (current bounding box.north east),
\p3 = (0,-\DEPTH),
\p4 = (\WIDTH,\HEIGHT)
in
(\x3-\x2+\x4,\y3) rectangle (\x4+\x3-\x1,\y4);
\end{tikzpicture}
%<*standalone>
\end{document}
%</standalone>