RMarkdown進階操作

技術背景Markdown大家都比較熟悉了,特別是在寫程序文檔和寫數學公式時,擁有著無與倫比的便利性 。同時在前面的一篇博客中我們介紹了使用RMarkdown去寫Latex Beamer演示文檔的方法,RMarkdown是由謝益輝等大神對Markdown、Latex和R語言等常用高級編程語言的結合,使得我們可以同時用這幾種語言去構造一個Beamer風格的演示文檔 。本文主要介紹一些比較偏門的、但是經??赡苡玫降腞Markdown進階操作 。
導入Latex宏包在RMarkdown標題處,我們可以自己寫一個普通的Latex文檔mysty.tex如下:
\usepackage{graphicx}\usepackage{animate}\usepackage{subfigure}\lstset{breaklines=true,basicstyle=\ttfamily}然后在RMarkdown的標題處引入該tex文件:
---title: "Your Title"author: "Dechin"date: "`2022.10.15`"output:beamer_presentation:pandoc_args: --listingsincludes:in_header: mysty.textoc: truenumber_sections: yesslide_level: 2theme: Dresdencolortheme: seagull---注意這里我們導入了latex的動圖animate模塊和子圖subfigure模塊,都是后面要用到的功能 。
修改圖片尺寸# Test1## Test2\begin{figure}\centerline{\includegraphics[width=1.0\textwidth]{./1.png}}\end{figure}這里我們使用的是Latex的圖片導入方法,默認居中,可以通過調整上述代碼中的width參數來控制圖片打印的大小 。

RMarkdown進階操作

文章插圖
RMarkdown加注釋從來沒想過在Markdown里面還可以加注釋,但事實上確實可以操作的,可以在需要注釋的行前加上[comment]:即可:
[comment]:# Test1[comment]:## Test2[comment]:\begin{figure}[comment]:\centerline{\includegraphics[width=1.0\textwidth]{./1.png}}[comment]:\end{figure}雖然編譯過程中會出現一系列的告警 , 但是我們可以不管 。
長公式顯示有時候我們的數學公式可能會比較長,這樣在演示文檔中可能會被自動截斷:
# Test1## Test2$$[q_1, q_2]=q_1q_2-q_2q_1=(s_1s_2-x_1x_2-y_1y_2-z_1z_2)+i(s_1x_2+s_2x_1+y_1z_2-y_2z_1)+j(s_1y_2+s_2y_1+x_2z_1-x_1z_2)+k(s_1z_2+s_2z_1+x_1y_2-x_2y_1)-(s_2s_1-x_2x_1-y_2y_1-z_2z_1)-i(s_2x_1+s_1x_2+y_2z_1-y_1z_2)-j(s_2y_1+s_1y_2+x_1z_2-x_2z_1)-k(s_2z_1+s_1z_2+x_2y_1-x_1y_2)=2i(y_1z_2-y_2z_1)+2j(x_2z_1-x_1z_2)+2k(x_1y_2-x_2y_1)\neq0$$此時編譯出來的演示文檔顯示效果非常不佳:

RMarkdown進階操作

文章插圖
這個時候可以選擇使用行內公式 , 這樣可以自動換行,很大概率是可以完整顯示出來的:
# Test1## Test2$[q_1, q_2]=q_1q_2-q_2q_1=(s_1s_2-x_1x_2-y_1y_2-z_1z_2)+i(s_1x_2+s_2x_1+y_1z_2-y_2z_1)+j(s_1y_2+s_2y_1+x_2z_1-x_1z_2)+k(s_1z_2+s_2z_1+x_1y_2-x_2y_1)-(s_2s_1-x_2x_1-y_2y_1-z_2z_1)-i(s_2x_1+s_1x_2+y_2z_1-y_1z_2)-j(s_2y_1+s_1y_2+x_1z_2-x_2z_1)-k(s_2z_1+s_1z_2+x_2y_1-x_1y_2)=2i(y_1z_2-y_2z_1)+2j(x_2z_1-x_1z_2)+2k(x_1y_2-x_2y_1)\neq0$行內公式的顯示效果如下所示:

RMarkdown進階操作

文章插圖
這樣一來,我們就可以在演示文檔上面看到完整的公式 。
公式居中和縮放續上一個章節內容,在公式使用行內顯示之后,我們發現公式此時是居左顯示的,而我們如果想要居中,在前面加一個\center標簽即可:
# Test1## Test2\center $[q_1, q_2]=q_1q_2-q_2q_1=(s_1s_2-x_1x_2-y_1y_2-z_1z_2)+i(s_1x_2+s_2x_1+y_1z_2-y_2z_1)+j(s_1y_2+s_2y_1+x_2z_1-x_1z_2)+k(s_1z_2+s_2z_1+x_1y_2-x_2y_1)-(s_2s_1-x_2x_1-y_2y_1-z_2z_1)-i(s_2x_1+s_1x_2+y_2z_1-y_1z_2)-j(s_2y_1+s_1y_2+x_1z_2-x_2z_1)-k(s_2z_1+s_1z_2+x_2y_1-x_1y_2)=2i(y_1z_2-y_2z_1)+2j(x_2z_1-x_1z_2)+2k(x_1y_2-x_2y_1)\neq0$居中顯示效果如下:

RMarkdown進階操作

文章插圖
在行內公式顯示下,依然存在公式過長的問題,此時我們可以借鑒參考鏈接1中的方法,在公式前面再加一個\tiny的標簽:
# Test1## Test2\tiny \center $[q_1, q_2]=q_1q_2-q_2q_1=(s_1s_2-x_1x_2-y_1y_2-z_1z_2)+i(s_1x_2+s_2x_1+y_1z_2-y_2z_1)+j(s_1y_2+s_2y_1+x_2z_1-x_1z_2)+k(s_1z_2+s_2z_1+x_1y_2-x_2y_1)-(s_2s_1-x_2x_1-y_2y_1-z_2z_1)-i(s_2x_1+s_1x_2+y_2z_1-y_1z_2)-j(s_2y_1+s_1y_2+x_1z_2-x_2z_1)-k(s_2z_1+s_1z_2+x_2y_1-x_1y_2)=2i(y_1z_2-y_2z_1)+2j(x_2z_1-x_1z_2)+2k(x_1y_2-x_2y_1)\neq0$縮小后的公式顯示效果如下:

RMarkdown進階操作

文章插圖
【RMarkdown進階操作】還有眾多的大小范圍可調(圖片來自于參考鏈接1):

RMarkdown進階操作

文章插圖

推薦閱讀