forked from yihui/knitr-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path037-graphics-hyperlink.tex
105 lines (88 loc) · 3.9 KB
/
037-graphics-hyperlink.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
%% courtesy of Jonathan Kennel
%% library(knitr); knit('links.Rnw')
\documentclass{report}\usepackage{graphicx, color}
%% maxwidth is the original width if it is less than linewidth
%% otherwise use linewidth (to make sure the graphics do not exceed the margin)
\makeatletter
\def\maxwidth{ %
\ifdim\Gin@nat@width>\linewidth
\linewidth
\else
\Gin@nat@width
\fi
}
\makeatother
\definecolor{fgcolor}{rgb}{0.2, 0.2, 0.2}
\newcommand{\hlnumber}[1]{\textcolor[rgb]{0,0,0}{#1}}%
\newcommand{\hlfunctioncall}[1]{\textcolor[rgb]{0.501960784313725,0,0.329411764705882}{\textbf{#1}}}%
\newcommand{\hlstring}[1]{\textcolor[rgb]{0.6,0.6,1}{#1}}%
\newcommand{\hlkeyword}[1]{\textcolor[rgb]{0,0,0}{\textbf{#1}}}%
\newcommand{\hlargument}[1]{\textcolor[rgb]{0.690196078431373,0.250980392156863,0.0196078431372549}{#1}}%
\newcommand{\hlcomment}[1]{\textcolor[rgb]{0.180392156862745,0.6,0.341176470588235}{#1}}%
\newcommand{\hlroxygencomment}[1]{\textcolor[rgb]{0.43921568627451,0.47843137254902,0.701960784313725}{#1}}%
\newcommand{\hlformalargs}[1]{\textcolor[rgb]{0.690196078431373,0.250980392156863,0.0196078431372549}{#1}}%
\newcommand{\hleqformalargs}[1]{\textcolor[rgb]{0.690196078431373,0.250980392156863,0.0196078431372549}{#1}}%
\newcommand{\hlassignement}[1]{\textcolor[rgb]{0,0,0}{\textbf{#1}}}%
\newcommand{\hlpackage}[1]{\textcolor[rgb]{0.588235294117647,0.709803921568627,0.145098039215686}{#1}}%
\newcommand{\hlslot}[1]{\textit{#1}}%
\newcommand{\hlsymbol}[1]{\textcolor[rgb]{0,0,0}{#1}}%
\newcommand{\hlprompt}[1]{\textcolor[rgb]{0.2,0.2,0.2}{#1}}%
\usepackage{framed}
\makeatletter
\newenvironment{kframe}{%
\def\at@end@of@kframe{}%
\ifinner\ifhmode%
\def\at@end@of@kframe{\end{minipage}}%
\begin{minipage}{\columnwidth}%
\fi\fi%
\def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
\colorbox{shadecolor}{##1}\hskip-\fboxsep
% There is no \\@totalrightmargin, so:
\hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
\MakeFramed {\advance\hsize-\width
\@totalleftmargin\z@ \linewidth\hsize
\@setminipage}}%
{\par\unskip\endMakeFramed%
\at@end@of@kframe}
\makeatother
\definecolor{shadecolor}{rgb}{.97, .97, .97}
\definecolor{messagecolor}{rgb}{0, 0, 0}
\definecolor{warningcolor}{rgb}{1, 0, 1}
\definecolor{errorcolor}{rgb}{1, 0, 0}
\newenvironment{knitrout}{}{} % an empty environment to be redefined in TeX
\usepackage{alltt}
\usepackage{tikz,hyperref}
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\begin{document}
Create link texts in the data:
\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{alltt}
\hlfunctioncall{library}(lattice)
\hlfunctioncall{data}(iris)
iris$hyperlink <- \hlfunctioncall{paste}(\hlstring{"\textbackslash{}\textbackslash{}hyperlink\{"}, iris$Species, \hlstring{"\}\{"}, iris$Species,
\hlstring{"\}"}, sep = \hlstring{""})
iris$hypertarget <- \hlfunctioncall{paste}(\hlstring{"\textbackslash{}\textbackslash{}hypertarget\{"}, iris$Species, \hlstring{"\}\{"}, iris$Species,
\hlstring{"\}"}, sep = \hlstring{""})
\end{alltt}
\end{kframe}
\end{knitrout}
Draw these texts in plots (you can click on the labels):
\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\begin{kframe}
\begin{alltt}
\hlfunctioncall{xyplot}(Sepal.Length ~ Sepal.Width | hyperlink, data = iris)
\end{alltt}
\end{kframe}\input{figure/037-graphics-hyperlink-pltFacet.tikz}
\end{knitrout}
\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\begin{kframe}
\begin{alltt}
\hlfunctioncall{xyplot}(Sepal.Length ~ Sepal.Width | hypertarget, data = iris, layout = \hlfunctioncall{c}(1,
1))
\end{alltt}
\end{kframe}\input{figure/037-graphics-hyperlink-pltInd1.tikz}\input{figure/037-graphics-hyperlink-pltInd2.tikz}\input{figure/037-graphics-hyperlink-pltInd3.tikz}
\end{knitrout}
Note the option external has to be FALSE here, otherwise LaTeX will not be able
to find the link target in the document.
\end{document}