Beamer目前似乎已經(jīng)是LaTeX下演示文稿(PPT、幻燈片)的標(biāo)準(zhǔn),Beamer做演示文稿象寫程序代碼。于是,如果文稿內(nèi)容本來就含有程序代碼,特別是包含有下劃線、@等特殊符號,一個個去處理顯然是不切實際的,幸好有l(wèi)istings宏包,但是,如果代碼里面有中文,或者注釋里面有中文,要么編譯不過,要么一堆亂碼。
這個問題的解決,網(wǎng)上有不少方案,安全易用的方案是
經(jīng)過這樣設(shè)置之后,不能再用pdfLaTeX編譯了,只能用XeLaTeX編譯,而且,文件名也不再支持中文了,只能用demo.tex等名字來保存文件。
以上在Win10 & TeXlive2019 & TexWorks中測試。
導(dǎo)言區(qū)的設(shè)置,寫Arduino代碼:
\lstset{
language=C++, %代碼語言C++
basicstyle=\fontspec{Times New Roman},
breaklines=true, %過長的代碼自動換行
extendedchars=false, %代碼跨頁顯示章節(jié)標(biāo)題、頁眉
escapeinside=``,
texcl=true,
}
正文開始frame時,加入fragile參數(shù):
\begin{frame}[fragile]
\frametitle{用Blink測試ESP32燒錄(一)}
int LED\_PIN=2指定ESP32板上的引腳2上的LED為輸出。
但需注意,有些ESP32板上除了電源指示的LED,再沒有其他LED。
\begin{lstlisting}
int LED_PIN=2
void setup() {
pinMode(LED_PIN, OUTPUT);/*指定2號腳為輸出腳*/
}
void loop() {/*循環(huán)運(yùn)行,除非斷電*/
digitalWrite(LED_PIN, HIGH);/*給高電平*/
delay(1000);/*暫停1秒*/
digitalWrite(LED_PIN, LOW);/*給低電平*/
delay(1000);/*暫停1秒*/
}
\end{lstlisting}
\end{frame}
lstistings宏包似乎不支持C語言//這樣的行注釋。效果: