日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Beamer幻燈片中l(wèi)istings包的中文注釋亂碼解決方案

 新用戶(hù)5228KeDY 2021-10-10

Beamer幻燈片中l(wèi)istings包的中文注釋亂碼解決方案

Beamer目前似乎已經(jīng)是LaTeX下演示文稿(PPT、幻燈片)的標(biāo)準(zhǔn),Beamer做演示文稿象寫(xiě)程序代碼。于是,如果文稿內(nèi)容本來(lái)就含有程序代碼,特別是包含有下劃線、@等特殊符號(hào),一個(gè)個(gè)去處理顯然是不切實(shí)際的,幸好有l(wèi)istings宏包,但是,如果代碼里面有中文,或者注釋里面有中文,要么編譯不過(guò),要么一堆亂碼。

這個(gè)問(wèn)題的解決,網(wǎng)上有不少方案,安全易用的方案是

  1. 改\begin{frame}為begin{frame}[fragile] \frametitle{ }
  2. 使用“逃逸”字,在lstset集合里設(shè)置escapeinside=``,選項(xiàng)
  3. 若需要設(shè)置代碼字體,則使用\fontspec宏包,同時(shí)在lstset集合里加入basicstyle=\fontspec{字體},選項(xiàng)

經(jīng)過(guò)這樣設(shè)置之后,不能再用pdfLaTeX編譯了,只能用XeLaTeX編譯,而且,文件名也不再支持中文了,只能用demo.tex等名字來(lái)保存文件。

以上在Win10 & TeXlive2019 & TexWorks中測(cè)試。

導(dǎo)言區(qū)的設(shè)置,寫(xiě)Arduino代碼:

\lstset{
  language=C++, %代碼語(yǔ)言C++
  basicstyle=\fontspec{Times New Roman},
  breaklines=true, %過(guò)長(zhǎng)的代碼自動(dòng)換行
  extendedchars=false, %代碼跨頁(yè)顯示章節(jié)標(biāo)題、頁(yè)眉
  escapeinside=``,
  texcl=true,
  }

正文開(kāi)始frame時(shí),加入fragile參數(shù):

\begin{frame}[fragile]
  \frametitle{用Blink測(cè)試ESP32燒錄(一)}
  int LED\_PIN=2指定ESP32板上的引腳2上的LED為輸出。
  但需注意,有些ESP32板上除了電源指示的LED,再?zèng)]有其他LED。

\begin{lstlisting}
  int LED_PIN=2
  void setup() {
    pinMode(LED_PIN, OUTPUT);/*指定2號(hào)腳為輸出腳*/
  }

  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語(yǔ)言//這樣的行注釋。效果:

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多