Câu hỏi này tương tự như consistent code html inline and in chunks with knitr. Thay vì tài liệu .Rhtml, tôi muốn làm nổi bật mã R nội tuyến trong các tài liệu R Markdown, ví dụ: sau `r "plot(cars, main = 'A scatterplot.')"`
được biên dịch qua rmarkdown, các mã thông báo như plot
sẽ được đánh dấu. Theo mặc định, các đoạn mã R được đánh dấu cú pháp, nhưng không có cách nào để làm nổi bật mã R nội tuyến.Làm thế nào để cú pháp làm nổi bật mã R nội tuyến trong R Markdown?
Trả lời
Dưới đây là một giải pháp sử dụng development version của gói highr (devtools::install_github('yihui/highr')
). Về cơ bản bạn chỉ cần xác định các lệnh LaTeX tùy chỉnh của bạn để làm nổi bật các mã thông báo. highr:::cmd_pandoc_latex
là một khung dữ liệu của lệnh LaTeX mà Pandoc sử dụng để làm nổi bật cú pháp.
head(highr:::cmd_pandoc_latex)
## cmd1 cmd2
## COMMENT \\CommentTok{ }
## FUNCTION \\NormalTok{ }
## IF \\NormalTok{ }
## ELSE \\NormalTok{ }
## WHILE \\NormalTok{ }
## FOR \\NormalTok{ }
Sau đó, bạn có thể xác định lại móc inline
của knitr:
---
output:
pdf_document:
keep_tex: yes
---
```{r include=FALSE}
local({
hi_pandoc = function(code) {
if (knitr:::pandoc_to() != 'latex') return(code)
if (packageVersion('highr') < '0.6.1') stop('highr >= 0.6.1 is required')
res = highr::hi_latex(code, markup = highr:::cmd_pandoc_latex)
sprintf('\\texttt{%s}', res)
}
hook_inline = knitr::knit_hooks$get('inline')
knitr::knit_hooks$set(inline = function(x) {
if (is.character(x) && inherits(x, 'AsIs')) hi_pandoc(x) else hook_inline(x)
})
})
```
Test inline R code: `r I("plot(cars, main = 'A scatterplot.')")`.
Normal inline code `r pi`.
A code block:
```r
plot(cars, main = 'A scatterplot.')
1 + 2 # a comment
```
tôi đã sử dụng I()
như một dấu hiệu thuận tiện để nói với chuỗi ký tự là các câu lệnh của bố từ sợi nhân vật bình thường. Nó chỉ là một sự lựa chọn tùy ý. đầu ra PDF:
Đây không phải là một giải pháp hoàn hảo, mặc dù. Bạn sẽ cần phải tinh chỉnh nó trong một số trường hợp. Ví dụ: hầu hết các ký tự LaTeX đặc biệt không được thoát, chẳng hạn như ~
. Bạn có thể cần xử lý mã LaTeX được trả về bởi hi_pandoc()
bởi gsub()
.
Cá nhân tôi tìm thấy nhiều màu trong đầu ra nội dòng mất tập trung, vì vậy tôi sẽ không làm nổi bật cú pháp, nhưng đây là hoàn toàn là sở thích cá nhân.
Giả sử sau đó nó sẽ tương đối dễ triển khai màu nền xám hơn là tô sáng cú pháp trong văn bản theo cách tương tự. Tôi thường thấy rằng học sinh đọc văn bản với mã nội tuyến trong việc tìm thấy khó khăn để chọn ra những gì thực sự là mã R vì các phông chữ rất giống nhau. Có nền màu xám sẽ làm cho nó rõ ràng hơn, tương tự như tôi đoán đầu ra html như trong câu trả lời github của bạn chẳng hạn. – jamieRowen
Giải pháp tuyệt vời! Bất kỳ đề xuất làm thế nào tôi có thể làm nổi bật mã nội tuyến 'i %% 5'? Các dấu hiệu tỷ lệ phần trăm không được thoát mà ném một lỗi (cũng inline làm nổi bật một bình luận như '# Comment' không hoạt động). –
- 1. Làm nổi bật cú pháp khác trong Github Markdown
- 2. Làm thế nào để chạy R Mã trong tập tin R Markdown trong SublimeREPL?
- 3. Giữ cú pháp đánh dấu R làm nổi bật khi in
- 4. Làm nổi bật cú pháp trong vim
- 5. Làm nổi bật cú pháp Wordpress
- 6. Làm thế nào để làm nội tâm trong R
- 7. Làm nổi bật cú pháp Github Gists không hoạt động
- 8. Cú pháp Vim làm nổi bật các ký tự ẩn
- 9. Làm nổi bật giá trị cụ thể trong ô R
- 10. Làm thế nào để có được cú pháp HTML làm nổi bật bên trong các chuỗi PHP & cú pháp heredoc?
- 11. Làm nổi bật cú pháp trong tài liệu MS Word
- 12. động nổi bật cú pháp
- 13. Python difflib: làm nổi bật sự khác biệt nội tuyến?
- 14. Làm nổi bật cú pháp trong MS Word
- 15. Làm nổi bật cú pháp Haml/Sass trong Notepad ++?
- 16. Cú pháp làm nổi bật tệp vimrc trong Emacs?
- 17. C# - làm nổi bật cú pháp hoàn hảo
- 18. Cú pháp Làm nổi bật vấn đề hiệu suất
- 19. C++ làm nổi bật cú pháp trình tạo html
- 20. làm nổi bật cú pháp vim cải thiện hiệu suất
- 21. Vim cú pháp tùy chỉnh làm nổi bật nền chỉ
- 22. PHPStorm JSX/Làm nổi bật cú pháp phản ứng
- 23. Làm thế nào để thực hiện chỉnh sửa nội tuyến trên datatables trong R Shiny
- 24. RMarkdown: Làm thế nào để thay đổi dòng tiêu đề trong mục lục trong R Markdown?
- 25. Làm nổi bật cú pháp Python trong LaTeX trong Rstudio với knitR
- 26. Làm nổi bật cú pháp miễn phí .NET Editor
- 27. Cú pháp Rowspan trong Markdown
- 28. Đau Xcode, làm nổi bật cú pháp bị hỏng
- 29. C# Làm nổi bật cú pháp cho Confluence
- 30. Làm nổi bật cú pháp F # cho notepad ++
cũng xem http://stackoverflow.com/questions/16405536/knitr-inline-chunk-options-no-evaluation-or-just-render-highlighted-code/16406120#16406120 – baptiste