Tài liệu này dành cho người chưa từng dùng R và có rất ít kinh nghiệm lập trình, nhưng muốn tạo ra những báo cáo R Markdown trông chuyên nghiệp và kiểm soát được hình thức của chúng. Mục tiêu không phải là biến bạn thành lập trình viên web, mà là trang bị đủ hiểu biết để bạn tự định dạng văn bản, sắp xếp bố cục, và điều chỉnh giao diện một cách tự tin.
Cách trình bày xuyên suốt là đi từ trực giác đến kỹ thuật. Với mỗi chủ đề, ta sẽ bắt đầu bằng việc giải thích vì sao nó cần thiết và một ví dụ cụ thể, rồi mới đến cú pháp chính xác. Mọi thuật ngữ tiếng Anh sẽ được giải thích ngay khi xuất hiện lần đầu. Một điểm thú vị là tài liệu này tự minh họa nhiều kỹ thuật lên chính nó; chẳng hạn các hộp màu mà bạn sắp thấy được tạo bằng đúng phương pháp trình bày ở Phần V.
Quy ước đọc. Phần lớn đoạn code trong tài liệu được trình bày để bạn đọc và học, không tự chạy khi kết xuất. Một vài ví dụ an toàn sẽ chạy thật để bạn thấy kết quả. Khi áp dụng vào tài liệu của mình, bạn sẽ tự chạy chúng.
Trước khi học cách định dạng, bạn cần một bức tranh đơn giản về việc một tệp R Markdown biến thành trang web ra sao. Hiểu được điều này, bạn sẽ luôn biết khi gặp vấn đề thì nên sửa ở đâu.
Hãy hình dung quá trình như một dây chuyền ba công đoạn. Bạn viết một
tệp có đuôi .Rmd, trong đó trộn lẫn chữ viết và code. Ở
công đoạn thứ nhất, một thành phần tên là knitr chạy
toàn bộ code trong tệp, lấy kết quả và biểu đồ, rồi thay chúng vào đúng
vị trí, tạo ra một tệp văn bản thuần gọi là Markdown. Ở công đoạn thứ
hai, một công cụ tên là Pandoc nhận tệp Markdown đó và
dịch nó sang định dạng đích, thường là một trang HTML. Nói gọn theo cách
của chính nhóm tác giả R Markdown, knitr lo việc chạy code và chuyển Rmd
thành Markdown, còn Pandoc lo việc kết xuất Markdown sang định dạng bạn
muốn.
Tệp .Rmd ──(knitr chạy code)──► Markdown ──(Pandoc kết xuất)──► HTML
Bức tranh ba lớp cho bạn biết chính xác mỗi loại điều chỉnh nằm ở đâu. Khi bạn muốn thay đổi nội dung hay cách chạy code, bạn sửa trong các khối code. Khi bạn muốn thay đổi cấu trúc và tùy chọn tổng thể của tài liệu, chẳng hạn có mục lục hay không, bạn sửa trong phần khai báo ở đầu tệp. Còn khi bạn muốn thay đổi hình thức hiển thị như màu sắc, cỡ chữ, khoảng cách, bạn tác động vào lớp HTML bằng CSS. Vì sản phẩm cuối là một trang web, mọi quy tắc trang trí của web đều áp dụng được, và đó là lý do CSS trở thành công cụ định dạng mạnh nhất mà ta sẽ dành hẳn một phần để học.
Nếu sau này bạn chuyển sang Quarto, công cụ kế nhiệm của R Markdown, thì mô hình ba lớp này gần như không đổi; phần lớn kiến thức định dạng bạn học ở đây chuyển thẳng sang Quarto.
Mọi tệp .Rmd đều gồm ba loại thành phần, và việc nhận ra
chúng giúp bạn không bị rối. Thành phần thứ nhất là khối khai báo ở trên
cùng, nằm giữa hai dòng ba dấu gạch ngang, gọi là YAML; nó cấu hình
những thứ tổng thể như tiêu đề và định dạng đầu ra. Thành phần thứ hai
là văn bản thường, viết bằng cú pháp Markdown. Thành phần thứ ba là các
khối code, gọi là chunk. Trên thực tế, chính tài liệu bạn đang đọc cũng
được tạo từ ba thành phần này.
Markdown được thiết kế để viết nhanh mà vẫn định dạng được, bằng cách dùng vài ký hiệu đơn giản ngay trong dòng chữ. Bạn tạo tiêu đề bằng dấu thăng ở đầu dòng: một dấu thăng cho tiêu đề lớn nhất, hai dấu cho tiêu đề nhỏ hơn, và cứ thế. Bạn làm chữ in đậm bằng cách kẹp nó giữa hai cặp dấu sao, và in nghiêng bằng một cặp dấu sao.
# Tiêu đề cấp 1
## Tiêu đề cấp 2
Đây là một đoạn văn. Chữ **in đậm** dùng hai dấu sao, chữ *in nghiêng*
dùng một dấu sao, còn ~~chữ gạch ngang~~ dùng hai dấu ngã.
> Đây là một khối trích dẫn (blockquote), dùng dấu lớn hơn ở đầu dòng.Một điểm người mới hay vấp là việc xuống dòng. Trong Markdown, nhấn Enter một lần không tạo ra dòng mới khi hiển thị; muốn tách thành đoạn mới, bạn phải để một dòng trống giữa hai đoạn. Đây là quy ước khác với trình soạn thảo văn bản thông thường, nên cần nhớ ngay từ đầu.
Danh sách không thứ tự được tạo bằng dấu gạch ngang ở đầu mỗi mục, còn danh sách có thứ tự dùng số. Bạn tạo danh sách con bằng cách thụt vào hai dấu cách.
Bảng được tạo bằng dấu gạch đứng để ngăn cột và dấu gạch ngang để tách dòng tiêu đề. Dấu hai chấm trong dòng tách quy định căn lề của cột.
Khi nào không dùng bảng Markdown. Bảng viết tay như
trên chỉ tiện cho dữ liệu nhỏ và cố định. Khi bảng đến từ kết quả tính
toán, bạn nên để R tạo bảng tự động bằng knitr::kable()
hoặc gói gt, sẽ học ở Phần VI.
Bạn tạo liên kết bằng cách đặt chữ hiển thị trong ngoặc vuông, theo sau là địa chỉ trong ngoặc tròn. Chèn ảnh cũng tương tự nhưng thêm một dấu chấm than ở trước. Một tính năng rất hữu ích cho tài liệu dài là liên kết nội bộ, cho phép nhảy đến một mục khác trong cùng trang; bạn gán cho tiêu đề một định danh trong ngoặc nhọn, rồi trỏ tới định danh đó.
Đây là [một liên kết ra ngoài](https://r4ds.hadley.nz).

## Phần phương pháp {#phuong-phap}
Xem lại [phần phương pháp](#phuong-phap) ở trên.Công thức toán được viết giữa các dấu đô la và sẽ được hiển thị đẹp
nhờ một thư viện tên MathJax đi kèm sẵn. Ví dụ,
$\alpha = 0.05$ sẽ hiển thị thành ký hiệu toán học
chuẩn.
YAML là khối khai báo ở đầu tệp, nơi bạn bật tắt các tính năng tổng thể. Hãy hình dung nó như bảng điều khiển của tài liệu. Điều quan trọng với người mới là chú ý đến thụt lề, vì YAML dùng số khoảng trắng để hiểu cấp bậc; thụt sai sẽ gây lỗi. Dưới đây là phần YAML của chính tài liệu bạn đang đọc, kèm giải thích từng dòng.
---
title: "Tiêu đề tài liệu"
author: "Tên tác giả"
output:
html_document:
toc: true # tạo mục lục
toc_float: true # cho mục lục nổi ở lề trái, luôn thấy khi cuộn
toc_depth: 3 # mục lục lấy đến tiêu đề cấp 3
number_sections: true # tự đánh số các mục
theme: flatly # chọn giao diện tổng thể
highlight: tango # kiểu tô màu cho code
df_print: paged # cách hiển thị bảng dữ liệu
code_folding: show # cho phép ẩn/hiện code
---Tùy chọn toc quyết định có mục lục hay không, còn
toc_depth quyết định mục lục đi sâu đến cấp tiêu đề nào.
Khi bật toc_float, mục lục sẽ nổi ở lề trái và luôn hiển
thị trong khi bạn cuộn trang, rất tiện cho tài liệu dài. Tùy chọn
number_sections tự động đánh số các mục, giúp tài liệu mang
dáng dấp một báo cáo học thuật.
Tùy chọn code_folding cho phép độc giả tự ẩn hoặc hiện
code. Đặt giá trị show thì code hiện sẵn nhưng có nút thu
gọn; đặt hide thì code ẩn sẵn và độc giả bấm để xem. Đây là
cách hay để vừa giữ tính minh bạch vừa không làm rối người chỉ muốn đọc
kết quả.
Tùy chọn df_print quyết định cách một bảng dữ liệu được
in ra. Giá trị paged tạo bảng có phân trang, cho phép lật
trang và cuộn cột, rất gọn khi bảng nhiều dòng. Ví dụ dưới đây chạy thật
để bạn thấy hiệu ứng phân trang đó.
Theo mặc định, R Markdown tạo một tệp HTML tự chứa, nghĩa là mọi hình
ảnh và thư viện được nhúng thẳng vào một tệp duy nhất, nhờ đó bạn có thể
gửi tệp đó như gửi một tài liệu Word mà không lo thiếu thành phần. Tùy
chọn điều khiển hành vi này là self_contained, và trong hầu
hết trường hợp bạn nên để nguyên mặc định.
Trước khi học CSS, bạn nên biết rằng R Markdown đã cho sẵn nhiều lựa chọn giao diện chỉ bằng một dòng khai báo. Đây là cách nhanh nhất để tài liệu trông chuyên nghiệp.
Tùy chọn theme chọn một bộ giao diện tổng thể, lấy từ
một thư viện mẫu tên Bootswatch. Các theme hợp lệ gồm default, cerulean,
journal, flatly, darkly, readable, spacelab, united, cosmo, lumen,
paper, sandstone, simplex và yeti. Mỗi theme quy định sẵn phông chữ, màu
sắc và khoảng cách, nên chỉ cần đổi tên theme là toàn bộ diện mạo thay
đổi theo.
Tùy chọn highlight quyết định cách các đoạn code được tô
màu cú pháp. Các kiểu được hỗ trợ gồm default, tango, pygments, kate,
monochrome, espresso, zenburn, haddock, breezedark và textmate. Bạn có
thể thử vài kiểu để chọn cái dễ đọc nhất với mình.
Ngoài việc chọn tên theme có sẵn, có một cách tinh chỉnh sâu hơn nhưng vẫn không phải viết CSS, đó là dùng gói bslib. Cách này cho phép bạn đặt trực tiếp màu nền, màu chữ và phông chữ, kể cả phông từ kho Google Fonts, ngay trong YAML.
output:
html_document:
theme:
bg: "#FFFFFF" # màu nền
fg: "#1a1a1a" # màu chữ
primary: "#3b6ea5" # màu nhấn (link, tiêu đề)
base_font:
google: "Be Vietnam Pro" # phông chữ lấy từ Google FontsCách bslib đặc biệt hữu ích cho người dùng tiếng Việt, vì bạn có thể chỉ định một phông Google Fonts hỗ trợ dấu tiếng Việt tốt như Be Vietnam Pro, tránh được lỗi hiển thị dấu mà không cần viết CSS riêng.
Đây là phần trọng tâm, nơi bạn học cách kiểm soát hình thức ở mức chi tiết nhất. CSS, viết tắt của Cascading Style Sheets, là ngôn ngữ quy định cách hiển thị của các phần tử trên một trang web. Hãy hình dung tài liệu HTML là một ngôi nhà thô, còn CSS là toàn bộ phần trang trí nội thất quy định màu tường, kiểu chữ và khoảng cách.
Cách thứ nhất, tiện cho thử nghiệm nhanh, là tạo một khối code đặc
biệt loại css ngay trong tệp. Khi đặt tùy chọn
echo=FALSE, đoạn CSS sẽ không hiện ra như chữ mà được nhúng
vào trang dưới dạng quy tắc trang trí. Cách thứ hai là tách CSS ra một
tệp riêng có đuôi .css rồi khai báo trong YAML, giúp tái sử
dụng cho nhiều tài liệu. Cách thứ ba là viết thẳng thuộc tính vào một
thẻ HTML, chỉ nên dùng cho điều chỉnh lẻ.
Mỗi quy tắc CSS gồm hai phần: một selector cho biết tác động lên phần tử nào, và một khối thuộc tính cho biết thay đổi gì. Hãy hình dung selector như địa chỉ, còn thuộc tính như nội dung công việc cần làm tại địa chỉ đó. Có ba loại selector cơ bản. Selector theo thẻ nhắm vào mọi phần tử cùng loại, ví dụ mọi đoạn văn. Selector theo lớp, bắt đầu bằng dấu chấm, nhắm vào những phần tử được gán lớp đó. Selector theo định danh, bắt đầu bằng dấu thăng, nhắm vào một phần tử duy nhất.
Đây là điểm mà người mới hay bối rối nhất, và chính nhóm tác giả R Markdown cũng nhấn mạnh rằng hiểu selector cùng độ ưu tiên của quy tắc là điều cực kỳ quan trọng. Vấn đề nảy sinh khi nhiều quy tắc cùng nhắm vào một phần tử nhưng mâu thuẫn nhau. Khi đó trình duyệt phải chọn một, và nó chọn theo độ ưu tiên, gọi là specificity. Quy tắc càng cụ thể thì càng thắng: selector theo định danh mạnh hơn selector theo lớp, và selector theo lớp mạnh hơn selector theo thẻ.
Điều này giải thích vì sao đôi khi bạn viết một quy tắc mà nó không
ăn: rất có thể theme đang áp một quy tắc cụ thể hơn của bạn. Trong
trường hợp đó, bạn có thể tăng độ cụ thể của selector, hoặc dùng từ khóa
!important để ép quy tắc thắng. Tuy nhiên nên dùng
!important một cách dè dặt, vì lạm dụng sẽ khiến về sau khó
kiểm soát.
May mắn là bạn không phải đoán mò. Mọi trình duyệt đều có sẵn công cụ kiểm tra. Sau khi kết xuất tài liệu, bạn mở nó trong trình duyệt, nhấp chuột phải vào phần tử cần chỉnh rồi chọn Inspect. Một bảng sẽ hiện ra cho thấy chính xác những quy tắc CSS nào đang áp lên phần tử đó, quy tắc nào đang thắng và quy tắc nào bị gạch ngang vì thua độ ưu tiên. Đây là cách nhanh nhất để hiểu vì sao tài liệu trông như hiện tại và cần sửa selector nào.
Ba thuộc tính typography quan trọng nhất là phông chữ, cỡ chữ và khoảng cách dòng. Để dùng một phông từ Google Fonts, bạn nhập nó ở đầu khối CSS rồi khai báo cho phần thân tài liệu.
@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro&display=swap');
body {
font-family: 'Be Vietnam Pro', sans-serif;
font-size: 1rem; /* dùng rem thay vì px để chữ co giãn theo cài đặt người đọc */
line-height: 1.7; /* khoảng cách dòng, 1.6 đến 1.8 thường dễ đọc */
}Vì sao nên dùng đơn vị rem thay vì px. Đơn vị px là cố định, còn rem co giãn theo cỡ chữ gốc mà người đọc cài đặt trong trình duyệt. Dùng rem giúp tài liệu thân thiện hơn với người cần chữ lớn và hiển thị tốt trên nhiều màn hình.
Để tài liệu trông chuyên nghiệp, màu sắc nên nhất quán thay vì mỗi nơi một kiểu. CSS hiện đại cho phép khai báo các biến màu một lần rồi dùng lại khắp nơi, nên khi muốn đổi tông bạn chỉ sửa một chỗ.
Khi đã quen, bạn có thể đi xa hơn với SCSS, một bản mở rộng của CSS
cho phép dùng biến, phép tính và lồng quy tắc, giúp quản lý style phức
tạp gọn gàng hơn. Với theme dựa trên Bootstrap, bạn có thể cung cấp một
tệp .scss tận dụng được các biến và tiện ích sẵn có của
theme. Đây là mức nâng cao, và bạn chỉ nên chạm tới khi nhu cầu tùy biến
vượt quá những gì CSS thường đáp ứng được.
Khi có nhiều phần song song mà bạn không muốn người đọc phải cuộn
dài, bạn có thể gom chúng vào các tab. Cách làm là thêm thuộc tính
.tabset vào một tiêu đề; mọi tiêu đề con một cấp thấp hơn
sẽ biến thành các tab. Bạn kết thúc vùng tab bằng một tiêu đề trống
không đánh số. Ví dụ dưới đây tạo ra tab thật ngay trong tài liệu
này.
Đây là nội dung của tab thứ nhất. Người đọc bấm vào tên tab để chuyển qua lại mà không phải cuộn trang.
Đây là nội dung của tab thứ hai. Mỗi tiêu đề cấp ba trong vùng này trở thành một tab riêng.
Đoạn code tạo ra hiệu ứng trên trông như sau. Bạn có thể thêm
.tabset-pills để tab có dạng nút bo tròn.
Những hộp màu mà bạn đã thấy nhiều lần trong tài liệu này được tạo bằng một kỹ thuật gọn gàng tên là fenced Div, tức là một khối bao bởi ba dấu hai chấm kèm tên lớp. Khi kết xuất, khối này trở thành một vùng HTML mang lớp đó, và bạn dùng CSS để trang trí cho lớp. Đây là cách làm callout sạch hơn nhiều so với viết thẻ HTML thô.
Trên thực tế, ở đầu tài liệu này có một khối CSS định nghĩa ba lớp note, tip và warn với màu nền và viền khác nhau, và mọi hộp bạn thấy đều dùng đúng ba lớp đó.
Khi muốn đặt hai khối cạnh nhau, bạn có thể lồng các fenced Div và dùng một kỹ thuật CSS tên flexbox để xếp chúng thành hàng ngang. Cách này hữu ích khi muốn đặt biểu đồ bên cạnh phần diễn giải.
Mỗi khối code có thể được tinh chỉnh bằng các tùy chọn đặt trong phần
khai báo của nó. Hiểu vài tùy chọn cốt lõi là đủ cho hầu hết nhu cầu.
Tùy chọn echo quyết định có hiển thị code hay không. Tùy
chọn eval quyết định có chạy code hay không. Tùy chọn
include khi đặt sai sẽ chạy code nhưng giấu cả code lẫn kết
quả, hữu ích cho bước chuẩn bị. Hai tùy chọn message và
warning cho phép ẩn các thông báo và cảnh báo để báo cáo
gọn gàng.
Khi một chunk vẽ biểu đồ, bạn điều chỉnh hình bằng các tùy chọn
riêng. fig.cap thêm chú thích, fig.align căn
lề, còn fig.width và fig.height quy định kích
thước. Ví dụ dưới đây chạy thật, dùng hàm vẽ cơ bản của R để không phụ
thuộc gói nào.
plot(mtcars$wt, mtcars$mpg,
xlab = "Trọng lượng", ylab = "Mức tiêu hao (mpg)",
pch = 19, col = "#3b6ea5")Quan hệ giữa trọng lượng và mức tiêu hao nhiên liệu
Đây là tính năng phân biệt R Markdown với một báo cáo gõ tay trong Word. Bạn có thể nhúng một giá trị tính toán thẳng vào câu văn, để khi dữ liệu thay đổi thì con số trong văn bản tự cập nhật theo, không bao giờ lệch. Cách làm là đặt biểu thức R giữa hai dấu huyền kèm chữ r.
Ví dụ, câu sau có một con số được tính tự động: bộ dữ liệu mtcars có 32 dòng. Con số này không phải mình gõ tay, mà do R đếm khi kết xuất. Nếu dữ liệu đổi, câu văn đổi theo.
Để biến một bảng dữ liệu thô thành bảng trình bày đẹp, công cụ đơn
giản nhất là hàm knitr::kable. Khi cần bảng phức tạp hơn
với tiêu đề nhóm hay tô màu có điều kiện, bạn dùng thêm gói
kableExtra hoặc gói gt. Ví dụ dưới đây dùng
kable và chạy thật.
| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
Có nhiều gói làm bảng và mỗi gói mạnh ở một việc. Với người mới, hãy
bắt đầu bằng kable cho bảng tĩnh đơn giản, rồi học
gt khi cần bảng phức tạp, và DT khi cần bảng
tương tác có ô tìm kiếm.
Phần này dành cho khi nhu cầu của bạn vượt quá những gì CSS và YAML thông thường đáp ứng được. Bạn không nhất thiết phải dùng ngay, nhưng biết rằng chúng tồn tại sẽ hữu ích về sau.
Tùy chọn includes trong YAML cho phép chèn các đoạn HTML
vào những vị trí cố định: vào phần đầu trang, vào ngay trước phần thân,
hoặc vào cuối phần thân. Đây là cách thêm những thứ như mã phân tích
truy cập, một thanh điều hướng tùy chỉnh, hay một chân trang.
Ở mức sâu nhất, bạn có thể thay toàn bộ khuôn mẫu mà Pandoc dùng để
dựng trang HTML, bằng tùy chọn template. Nhóm tác giả R
Markdown lưu ý rằng đừng đánh giá thấp khả năng tùy biến của công cụ
này: khuôn mẫu Pandoc có thể mạnh đến bất ngờ, miễn là bạn hiểu các công
nghệ nền như CSS và sẵn lòng đầu tư thời gian. Tuy nhiên đây là mức dành
cho người đã vững, và với phần lớn báo cáo thì YAML cùng CSS đã quá
đủ.
Sau khi đã dày công định dạng một tài liệu ưng ý, bạn sẽ không muốn làm lại từ đầu mỗi lần. Giải pháp là tạo một template, tức một tệp khung sườn để tái sử dụng.
Cách đơn giản nhất là lưu một tệp .Rmd mẫu, trong đó đã
có sẵn phần YAML chuẩn hóa, một khối setup chuẩn, một khối CSS chuẩn, và
cấu trúc tiêu đề khung. Mỗi khi bắt đầu tài liệu mới, bạn sao chép tệp
này rồi điền nội dung vào. Ở mức bài bản hơn, bạn có thể đóng gói
template thành một mẫu xuất hiện trong trình đơn tạo tài liệu mới của
RStudio, qua đường dẫn tạo tệp từ template. Mức này đòi hỏi một cấu trúc
thư mục nhất định nhưng không cần xuất bản gì ra ngoài, và phù hợp khi
bạn muốn dùng chung một bộ định dạng cho nhiều dự án.
Trước khi xuất bản, hãy rà soát vài điểm để tránh các lỗi thường gặp. Thứ nhất là mã hóa ký tự: hãy đảm bảo tệp được lưu ở dạng UTF-8 và dấu tiếng Việt ở dạng dính liền, để không bị lỗi hiển thị dấu. Thứ hai là khả năng chạy lại: hãy chắc rằng tài liệu kết xuất được từ một phiên làm việc sạch, vì kết xuất thành công là bằng chứng tài liệu thật sự ổn. Thứ ba là đường dẫn: tránh dùng đường dẫn tuyệt đối gắn với ổ đĩa của riêng bạn. Thứ tư là tính tự chứa: với tài liệu sẽ chia sẻ, nên giữ chế độ tự chứa để mọi thành phần nằm trong một tệp.
Khi đã sẵn sàng, quy trình xuất bản lên RPubs diễn ra như sau. Bạn kết xuất tài liệu ra HTML, rồi trên khung xem trước, nhấn nút Publish ở góc trên bên phải và chọn RPubs. Trình duyệt sẽ mở để bạn đăng nhập hoặc tạo tài khoản miễn phí, sau đó điền tiêu đề và xác nhận để nhận đường liên kết chia sẻ. Cần nhớ rằng tệp nguồn phải nằm trong một thư mục con cụ thể chứ không đặt ngay tại gốc ổ đĩa.
| Tham số | Tác dụng | Giá trị ví dụ |
|---|---|---|
toc |
Tạo mục lục | true / false |
toc_float |
Mục lục nổi khi cuộn | true / false |
toc_depth |
Mục lục sâu đến cấp nào | 2, 3 |
number_sections |
Tự đánh số mục | true / false |
theme |
Giao diện tổng thể | flatly, readable, cosmo |
highlight |
Tô màu code | tango, kate, espresso |
code_folding |
Ẩn hiện code | show / hide |
df_print |
Cách in bảng dữ liệu | paged, kable, tibble |
css |
Tệp CSS riêng | “style.css” |
| Tùy chọn | Tác dụng |
|---|---|
echo |
Hiển thị code hay không |
eval |
Chạy code hay không |
include |
Chạy nhưng giấu cả code lẫn kết quả |
message |
Ẩn thông báo |
warning |
Ẩn cảnh báo |
fig.cap |
Chú thích hình |
fig.align |
Căn lề hình |
fig.width, fig.height |
Kích thước hình |
cache |
Lưu kết quả để khỏi chạy lại |
| Selector | Nhắm vào | Ví dụ |
|---|---|---|
tag |
Mọi phần tử cùng loại | p, h2, a |
.lop |
Phần tử có lớp đó | .note |
#dinhdanh |
Một phần tử duy nhất | #tom-tat |
cha con |
Phần tử con bên trong cha | .note p |
Tài liệu này đã đi qua toàn bộ chặng đường định dạng một tài liệu R Markdown, từ việc hiểu cơ chế ba lớp, qua cú pháp văn bản và các tùy chọn YAML, đến giao diện dựng sẵn, rồi đào sâu vào CSS với selector, độ ưu tiên và công cụ gỡ rối, cuối cùng là bố cục, code chunk, tùy biến nâng cao và cách tái sử dụng qua template. Điều quan trọng nhất cần mang theo là mô hình ba lớp ở đầu tài liệu: một khi bạn biết mỗi loại điều chỉnh thuộc về lớp nào, việc định dạng không còn là chuyện thử sai may rủi, mà trở thành một quy trình rõ ràng và kiểm soát được. Hãy bắt đầu từ những thứ đơn giản như chọn theme và viết vài quy tắc CSS nhỏ, rồi mở rộng dần khi đã quen tay.