blob: c45999e5a079ebfae4450335d32a2ae5e9a8ab1d [file] [log] [blame]
Hao Zhuc1450882018-10-03 17:56:26 -04001<!DOCTYPE html>
2<html >
3
4<head>
5
6 <meta charset="UTF-8">
7 <meta http-equiv="X-UA-Compatible" content="IE=edge">
8 <title>Using kableExtra in Bookdown Projects</title>
9 <meta name="description" content="This example provides documentations for using kableExtra to customize tables in bookdown projects.">
10 <meta name="generator" content="bookdown and GitBook 2.6.7">
11
12 <meta property="og:title" content="Using kableExtra in Bookdown Projects" />
13 <meta property="og:type" content="book" />
14
15
16 <meta property="og:description" content="This example provides documentations for using kableExtra to customize tables in bookdown projects." />
17
18
19 <meta name="twitter:card" content="summary" />
20 <meta name="twitter:title" content="Using kableExtra in Bookdown Projects" />
21
22 <meta name="twitter:description" content="This example provides documentations for using kableExtra to customize tables in bookdown projects." />
23
24
25<meta name="author" content="Hao Zhu">
26
27
28<meta name="date" content="2018-10-03">
29
30 <meta name="viewport" content="width=device-width, initial-scale=1">
31 <meta name="apple-mobile-web-app-capable" content="yes">
32 <meta name="apple-mobile-web-app-status-bar-style" content="black">
33
34
35<link rel="prev" href="index.html">
36<link rel="next" href="use-bootstrap-tables-in-gitbooks-epub.html">
37<script src="libs/jquery-2.2.3/jquery.min.js"></script>
38<link href="libs/gitbook-2.6.7/css/style.css" rel="stylesheet" />
39<link href="libs/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
40<link href="libs/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
41<link href="libs/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
42<link href="libs/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
43
44
45
46
47
48
49
50<script src="libs/kePrint-0.0.1/kePrint.js"></script>
51<link href="libs/bsTable-3.3.7/bootstrapTable.min.css" rel="stylesheet" />
52
53
54<style type="text/css">
55a.sourceLine { display: inline-block; line-height: 1.25; }
56a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
57a.sourceLine:empty { height: 1.2em; position: absolute; }
58.sourceCode { overflow: visible; }
59code.sourceCode { white-space: pre; position: relative; }
60div.sourceCode { margin: 1em 0; }
61pre.sourceCode { margin: 0; }
62@media screen {
63div.sourceCode { overflow: auto; }
64}
65@media print {
66code.sourceCode { white-space: pre-wrap; }
67a.sourceLine { text-indent: -1em; padding-left: 1em; }
68}
69pre.numberSource a.sourceLine
70 { position: relative; }
71pre.numberSource a.sourceLine:empty
72 { position: absolute; }
73pre.numberSource a.sourceLine::before
74 { content: attr(data-line-number);
75 position: absolute; left: -5em; text-align: right; vertical-align: baseline;
76 border: none; pointer-events: all;
77 -webkit-touch-callout: none; -webkit-user-select: none;
78 -khtml-user-select: none; -moz-user-select: none;
79 -ms-user-select: none; user-select: none;
80 padding: 0 4px; width: 4em;
81 color: #aaaaaa;
82 }
83pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
84div.sourceCode
85 { }
86@media screen {
87a.sourceLine::before { text-decoration: underline; }
88}
89code span.al { color: #ff0000; font-weight: bold; } /* Alert */
90code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
91code span.at { color: #7d9029; } /* Attribute */
92code span.bn { color: #40a070; } /* BaseN */
93code span.bu { } /* BuiltIn */
94code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
95code span.ch { color: #4070a0; } /* Char */
96code span.cn { color: #880000; } /* Constant */
97code span.co { color: #60a0b0; font-style: italic; } /* Comment */
98code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
99code span.do { color: #ba2121; font-style: italic; } /* Documentation */
100code span.dt { color: #902000; } /* DataType */
101code span.dv { color: #40a070; } /* DecVal */
102code span.er { color: #ff0000; font-weight: bold; } /* Error */
103code span.ex { } /* Extension */
104code span.fl { color: #40a070; } /* Float */
105code span.fu { color: #06287e; } /* Function */
106code span.im { } /* Import */
107code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
108code span.kw { color: #007020; font-weight: bold; } /* Keyword */
109code span.op { color: #666666; } /* Operator */
110code span.ot { color: #007020; } /* Other */
111code span.pp { color: #bc7a00; } /* Preprocessor */
112code span.sc { color: #4070a0; } /* SpecialChar */
113code span.ss { color: #bb6688; } /* SpecialString */
114code span.st { color: #4070a0; } /* String */
115code span.va { color: #19177c; } /* Variable */
116code span.vs { color: #4070a0; } /* VerbatimString */
117code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
118</style>
119
120</head>
121
122<body>
123
124
125
126 <div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
127
128 <div class="book-summary">
129 <nav role="navigation">
130
131<ul class="summary">
132<li class="chapter" data-level="1" data-path="index.html"><a href="index.html"><i class="fa fa-check"></i><b>1</b> Introduction</a></li>
133<li class="chapter" data-level="2" data-path="cross-format-tables-in-bookdown.html"><a href="cross-format-tables-in-bookdown.html"><i class="fa fa-check"></i><b>2</b> Cross-format Tables in Bookdown</a><ul>
134<li class="chapter" data-level="2.1" data-path="cross-format-tables-in-bookdown.html"><a href="cross-format-tables-in-bookdown.html#use-the-k-m-approach-instead-of-m-k"><i class="fa fa-check"></i><b>2.1</b> Use the “K-M” approach instead of “M-K”</a></li>
135<li class="chapter" data-level="2.2" data-path="cross-format-tables-in-bookdown.html"><a href="cross-format-tables-in-bookdown.html#prepare-your-tables-for-both-formats"><i class="fa fa-check"></i><b>2.2</b> Prepare Your Tables for Both Formats</a></li>
136</ul></li>
137<li class="chapter" data-level="3" data-path="use-bootstrap-tables-in-gitbooks-epub.html"><a href="use-bootstrap-tables-in-gitbooks-epub.html"><i class="fa fa-check"></i><b>3</b> Use Bootstrap Tables in gitbooks &amp; epub</a><ul>
138<li class="chapter" data-level="3.1" data-path="use-bootstrap-tables-in-gitbooks-epub.html"><a href="use-bootstrap-tables-in-gitbooks-epub.html#gitbook"><i class="fa fa-check"></i><b>3.1</b> Gitbook</a></li>
139<li class="chapter" data-level="3.2" data-path="use-bootstrap-tables-in-gitbooks-epub.html"><a href="use-bootstrap-tables-in-gitbooks-epub.html#epub"><i class="fa fa-check"></i><b>3.2</b> Epub</a></li>
140</ul></li>
141</ul>
142
143 </nav>
144 </div>
145
146 <div class="book-body">
147 <div class="body-inner">
148 <div class="book-header" role="navigation">
149 <h1>
150 <i class="fa fa-circle-o-notch fa-spin"></i><a href="./">Using kableExtra in Bookdown Projects</a>
151 </h1>
152 </div>
153
154 <div class="page-wrapper" tabindex="-1" role="main">
155 <div class="page-inner">
156
157 <section class="normal" id="section-">
158<div id="cross-format-tables-in-bookdown" class="section level1">
159<h1><span class="header-section-number">Chapter 2</span> Cross-format Tables in Bookdown</h1>
160<blockquote>
161<p>Note that if kableExtra 0.9.0 doesn’t support the EPUB format. If you need to output tables in <code>.epub</code>, please upgrade to the dev version or version 1.0 on CRAN once it’s released.</p>
162</blockquote>
163<div id="use-the-k-m-approach-instead-of-m-k" class="section level2">
164<h2><span class="header-section-number">2.1</span> Use the “K-M” approach instead of “M-K”</h2>
165<p>Please read this chapter about the “K-M”/“M-K” approaches in <code>bookdown</code>:
166<a href="https://bookdown.org/yihui/bookdown/new-session.html" class="uri">https://bookdown.org/yihui/bookdown/new-session.html</a></p>
167<p>To generate cross-format tables with <code>kableExtra</code> in a multi-format bookdown project, you will have to use the “M-K” approach by setting <code>new_session: true</code> in <code>_bookdown.yml</code>. Somehow the “M-K” approach, which merges chapters to a big Rmd and then renders, shares the global environment across formats. For now, I’m not sure if this is a bug or intended behavior. It might be fixable in the future but please don’t count on that. By setting <code>new_session: true</code>, we force R to use a new session for every chapter for different formats. In this way, tables are generated differently in different formats.</p>
168<p>Note that the “M-K” approach is slower than the “K-M” approach. At the same time, packages and data are not shared accross chapter.</p>
169<pre><code># Example _bookdown.yml
170book_filename: &quot;bookdown_example&quot;
171delete_merged_file: true
172new_session: true
173language:
174 ui:
175 chapter_name: &quot;Chapter &quot;</code></pre>
176</div>
177<div id="prepare-your-tables-for-both-formats" class="section level2">
178<h2><span class="header-section-number">2.2</span> Prepare Your Tables for Both Formats</h2>
179<p>In most cases, functions in <code>kable</code> and <code>kableExtra</code> use the same API to accomplish the same styling task in HTML and LaTeX. However, you also need some format specific settings so your tables will look good in both formats. Some common items here include the <code>booktabs</code> and <code>longtable</code> settings in <code>kable</code> and the <code>bootstrap_options</code> and <code>latex_options</code> in <code>kable_styling</code>.</p>
180<p>Here is an example for a table that will work in both HTML and LaTeX.</p>
181<pre class="sourceCode r"><code class="sourceCode r"><span class="kw">library</span>(kableExtra)
182mtcars[<span class="dv">1</span><span class="op">:</span><span class="dv">5</span>, <span class="dv">1</span><span class="op">:</span><span class="dv">5</span>] <span class="op">%&gt;%</span>
183<span class="st"> </span><span class="kw">kable</span>(<span class="dt">booktabs =</span> T) <span class="op">%&gt;%</span><span class="st"> </span>
184<span class="st"> </span><span class="kw">kable_styling</span>(
185 <span class="dt">latex_options =</span> <span class="kw">c</span>(<span class="st">&quot;striped&quot;</span>),
186 <span class="dt">full_width =</span> F
187 ) <span class="op">%&gt;%</span>
188<span class="st"> </span><span class="kw">column_spec</span>(<span class="dv">1</span>, <span class="dt">bold =</span> T) <span class="op">%&gt;%</span>
189<span class="st"> </span><span class="kw">add_header_above</span>(<span class="kw">c</span>(<span class="st">&quot; &quot;</span>, <span class="st">&quot;Group A&quot;</span> =<span class="st"> </span><span class="dv">2</span>, <span class="st">&quot;Group B&quot;</span> =<span class="st"> </span><span class="dv">3</span>))</code></pre>
190<table class="table" style="width: auto !important; margin-left: auto; margin-right: auto;">
191<thead>
192<tr>
193<th style="border-bottom:hidden" colspan="1">
194</th>
195<th style="border-bottom:hidden; padding-bottom:0; padding-left:3px;padding-right:3px;text-align: center; " colspan="2">
196<div style="border-bottom: 1px solid #ddd; padding-bottom: 5px; ">
197Group A
198</div>
199</th>
200<th style="border-bottom:hidden; padding-bottom:0; padding-left:3px;padding-right:3px;text-align: center; " colspan="3">
201<div style="border-bottom: 1px solid #ddd; padding-bottom: 5px; ">
202Group B
203</div>
204</th>
205</tr>
206<tr>
207<th style="text-align:left;">
208</th>
209<th style="text-align:right;">
210mpg
211</th>
212<th style="text-align:right;">
213cyl
214</th>
215<th style="text-align:right;">
216disp
217</th>
218<th style="text-align:right;">
219hp
220</th>
221<th style="text-align:right;">
222drat
223</th>
224</tr>
225</thead>
226<tbody>
227<tr>
228<td style="text-align:left;font-weight: bold;">
229Mazda RX4
230</td>
231<td style="text-align:right;">
23221.0
233</td>
234<td style="text-align:right;">
2356
236</td>
237<td style="text-align:right;">
238160
239</td>
240<td style="text-align:right;">
241110
242</td>
243<td style="text-align:right;">
2443.90
245</td>
246</tr>
247<tr>
248<td style="text-align:left;font-weight: bold;">
249Mazda RX4 Wag
250</td>
251<td style="text-align:right;">
25221.0
253</td>
254<td style="text-align:right;">
2556
256</td>
257<td style="text-align:right;">
258160
259</td>
260<td style="text-align:right;">
261110
262</td>
263<td style="text-align:right;">
2643.90
265</td>
266</tr>
267<tr>
268<td style="text-align:left;font-weight: bold;">
269Datsun 710
270</td>
271<td style="text-align:right;">
27222.8
273</td>
274<td style="text-align:right;">
2754
276</td>
277<td style="text-align:right;">
278108
279</td>
280<td style="text-align:right;">
28193
282</td>
283<td style="text-align:right;">
2843.85
285</td>
286</tr>
287<tr>
288<td style="text-align:left;font-weight: bold;">
289Hornet 4 Drive
290</td>
291<td style="text-align:right;">
29221.4
293</td>
294<td style="text-align:right;">
2956
296</td>
297<td style="text-align:right;">
298258
299</td>
300<td style="text-align:right;">
301110
302</td>
303<td style="text-align:right;">
3043.08
305</td>
306</tr>
307<tr>
308<td style="text-align:left;font-weight: bold;">
309Hornet Sportabout
310</td>
311<td style="text-align:right;">
31218.7
313</td>
314<td style="text-align:right;">
3158
316</td>
317<td style="text-align:right;">
318360
319</td>
320<td style="text-align:right;">
321175
322</td>
323<td style="text-align:right;">
3243.15
325</td>
326</tr>
327</tbody>
328</table>
329
330</div>
331</div>
332 </section>
333
334 </div>
335 </div>
336 </div>
337<a href="index.html" class="navigation navigation-prev " aria-label="Previous page"><i class="fa fa-angle-left"></i></a>
338<a href="use-bootstrap-tables-in-gitbooks-epub.html" class="navigation navigation-next " aria-label="Next page"><i class="fa fa-angle-right"></i></a>
339 </div>
340 </div>
341<script src="libs/gitbook-2.6.7/js/app.min.js"></script>
342<script src="libs/gitbook-2.6.7/js/lunr.js"></script>
343<script src="libs/gitbook-2.6.7/js/plugin-search.js"></script>
344<script src="libs/gitbook-2.6.7/js/plugin-sharing.js"></script>
345<script src="libs/gitbook-2.6.7/js/plugin-fontsettings.js"></script>
346<script src="libs/gitbook-2.6.7/js/plugin-bookdown.js"></script>
347<script src="libs/gitbook-2.6.7/js/jquery.highlight.js"></script>
348<script>
349gitbook.require(["gitbook"], function(gitbook) {
350gitbook.start({
351"sharing": {
352"github": false,
353"facebook": true,
354"twitter": true,
355"google": false,
356"linkedin": false,
357"weibo": false,
358"instapper": false,
359"vk": false,
360"all": ["facebook", "google", "twitter", "linkedin", "weibo", "instapaper"]
361},
362"fontsettings": {
363"theme": "white",
364"family": "sans",
365"size": 2
366},
367"edit": {
368"link": null,
369"text": null
370},
371"download": ["bookdown_example.pdf", "bookdown_example.epub"],
372"toc": {
373"collapse": "subsection"
374}
375});
376});
377</script>
378
379</body>
380
381</html>