I'm trying to generate an HTML report using RStudio, R Markdown and knitr. In the report I would like to display some bash
code. I do not want to run the code but I would like it to be highlighted.
It has been mentioned in another question but the suggestion there doesn't work for me. Here's what I've tried so far:
---
title: "bash highlighting?"
output: html_document
---
```{r, engine = 'bash', eval = FALSE}
for foo in (ls bar)
do
echo $foo
done
```
```{bash, eval = FALSE}
for foo in (ls bar)
do
echo $foo
done
```
Neither of these give me highlighting in the HTML document. I know it's possible because I remember seeing it somewhere a week or so ago, but I can't find it anymore! Does anyone know how I can achieve it?
Thanks for reading,
Tom
Edit: I just found this answer, which suggests using the following code block in the .Rmd
<link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
<script>
$(document).ready(function() {
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
});
</script>
This works for the bash code in the document but kills the highlighting for the R code!
## R version 3.2.0 (2015-04-16)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 14.04.2 LTS
##
## locale:
## [1] LC_CTYPE=en_AU.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_AU.UTF-8 LC_COLLATE=en_AU.UTF-8
## [5] LC_MONETARY=en_AU.UTF-8 LC_MESSAGES=en_AU.UTF-8
## [7] LC_PAPER=en_AU.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] formatR_1.2 tools_3.2.0 htmltools_0.2.6 yaml_2.1.13
## [5] rmarkdown_0.5.1 knitr_1.10 stringr_0.6.2 digest_0.6.8
## [9] evaluate_0.7
Creating documents with R Markdown starts with an . Rmd file that contains a combination of markdown (content with simple text formatting) and R code chunks. The . Rmd file is fed to knitr, which executes all of the R code chunks and creates a new markdown (. md) document which includes the R code and its output.
You can insert an R code chunk either using the RStudio toolbar (the Insert button) or the keyboard shortcut Ctrl + Alt + I ( Cmd + Option + I on macOS). There are a large number of chunk options in knitr documented at https://yihui.name/knitr/options.
The default syntax highlighting theme does not work well for non-R code chunks, and you can use other themes, e.g. pygments
---
title: "Bash Highlighting"
output:
html_document:
highlight: pygments
---
```{r, engine = 'bash', eval = FALSE}
for foo in (ls bar)
do
echo $foo
done
```
OK, figured it out thanks to the comments. It seems it's RStudio
which is not playing nice with the highlighting. When I keep the intermediate markdown file as in.md
:
---
title: "Bash Highlighting"
output:
html_document:
keep_md: true
---
```{r, engine = 'bash', eval = FALSE}
for foo in (ls bar)
do
echo $foo
done
```
then convert to html with pandoc
using e.g. the CSS from BioConductor:
pandoc -s in.md \
-c https://hedgehog.fhcrc.org/bioconductor/branches/RELEASE_3_1/madman/Rpacks/BiocStyle/inst/resources/html/bioconductor.css \
-t html -o out.html
I get nice code highlighting for R
and bash
.
Thanks!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With