LaTeX備忘——tcolorbox宏包應用示例集

tcolorbox宏包可以爲我們提供更好看的文本框,這裏列出一些應用例子方便以後查詢使用。


操作系統:Ubuntu 20.04

編輯工具:TeXstudio 2.12.22

編譯方式:LuaLaTeX


完整源代碼如下:

% 開源中國,陸巍的博客
\documentclass[oneside]{article}%

% 注意宏包順序,有可能會報錯
\usepackage{ctex}% 中文支持
\usepackage{geometry}% 用於頁面設置
\usepackage[dvipsnames, svgnames, x11names]{xcolor} % 顏色支持
\usepackage{graphics}% 圖形支持
\usepackage[
  colorlinks=true,
  linkcolor=Navy,
  urlcolor=Navy,
  citecolor=Navy,
  anchorcolor=Navy
]{hyperref}
\usepackage{enumerate}% 枚舉支持
\usepackage{tcolorbox}% 支持更好的文本框
\tcbuselibrary{skins, breakable}% 支持文本框跨頁
\usepackage[english]{babel}% 載入美式英語斷字模板
\usepackage[cache=false]{minted}% 支持更好的代碼顯示

% 設置爲A4紙,邊距適中模式(永中office)
\geometry{%
  width = 210mm,%
  height = 297mm,
  left = 19.1mm,%
  right = 19.1mm,%
  top = 25.4mm,%
  bottom = 25.4mm%
}

\hyphenpenalty = 1000% 斷字設置,值越大,斷字越少。
\setmainfont{Ubuntu Mono}% 設置全局英文字體
\setlength{\parindent}{2em}% 縮進
\setlength{\parskip}{2ex} % 段間距
\setcounter{secnumdepth}{3} % 顯示到第3級section的編號


\begin{document}

\section{示例一:跨頁的文本框}
默認的tcolorbox文本框是不會跨頁顯示的,在本例中演示如何實現。

……

……

……

……

……

……

……

……

……

……


\begin{minted}[linenos=true, frame=single, breaklines=true]{c++}
#include "gmock/gmock.h"
TEST(SoundexEncoding, RetainSoleLetterOfOneLetterWord) {
Soundex soundex;
}
\end{minted}

\begin{tcolorbox}[enhanced, colback=GhostWhite, colframe=LightGray, coltitle=black, title=測試列表, fonttitle=\bfseries\Large, bottomrule=3ex, breakable=true]
  \qquad 在TDD過程中,你編寫並通過的第一個測試,都代表新加入到系統中的一種行爲。除了完成整個功能外,通過的測試數目是衡量進度的最佳指標,每個測試都代表系統中的一個小的行爲。
  
  \qquad 雖然不能事先知曉所有需要編寫的測試,但需要對將要處理的事務有一些初步的認識。許多使用TDD方法的開發者將他們想到的測試記錄到\textbf{測試列表}中(測試列表在\textit{Test Driven Development: By Example}[Bec02]中首次提出)。這個列表包含測試的名稱,或在需要做代碼清理時提示。
  
  \qquad 可以把測試列表寫在工作臺邊上的寫字板上(也可以把它作爲註釋寫入測試文件,只要在提交代碼前刪掉就行)。這個列表僅屬於你自己,所以如果喜歡的話,大可以使用簡要或隱晦的表達方式。
  
  \qquad 在做測試驅動開發並思考新的測試用例時,記得把它們加到測試列表裏。當添加一些你認爲將來需要清理的代碼時,也在這個列表中加一個提醒項。在完成一個測試或任務時,把它從列表中刪除即可,就這麼簡單。如果在編碼結束後,發現仍有沒完成的任務項,可以把它們加入到下一個編碼階段的列表。
  
  \qquad 可以把測試列表作爲初始設計的一部分。它能幫助說明你認爲自己需要構建什麼,它也可以啓發你去思考其他需要做的事情。
  
  \qquad 不要被這個列表束縛,它決定不了你要做什麼,也決定不了你做事的順序。但是,TDD是一個自然的流程,通常要順着測試指引的方向去做下一件事。
  
  \qquad 在學習TDD時,管理測試列表非常管用。試一試吧!
\end{tcolorbox}


\section{示例二}
\begin{tcolorbox}[
  colback=MistyRose,
  coltext=red,
  colframe=LightGray,
  boxrule=0.5mm
  ]
  \begin{verbatim}
  <!-- Not recommended: omits the protocol -->
  <script src="//ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
  
  <!-- Not recommended: uses HTTP -->
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>\end{verbatim}
\end{tcolorbox}

\begin{tcolorbox}[
  colback=white,
  coltext=ForestGreen,
  colframe=LightGray,
  boxrule=0.5mm
  ]
  \begin{verbatim}
  <!-- Recommended -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>\end{verbatim}
\end{tcolorbox}

\begin{tcolorbox}[
  colback=MistyRose,
  coltext=red,
  colframe=LightGray,
  boxrule=0.5mm
  ]
  \begin{verbatim}
  /* Not recommended: omits the protocol */
  @import '//fonts.googleapis.com/css?family=Open+Sans';
  
  /* Not recommended: uses HTTP */
  @import 'http://fonts.googleapis.com/css?family=Open+Sans';\end{verbatim}
\end{tcolorbox}

\begin{tcolorbox}[
  colback=white,
  coltext=ForestGreen,
  colframe=LightGray,
  boxrule=0.5mm
  ]
  \begin{verbatim}
  /* Recommended */
  @import 'https://fonts.googleapis.com/css?family=Open+Sans';\end{verbatim}
\end{tcolorbox}

\end{document}
示例一:跨頁的文本框

默認情況下,tcolorbox文本框不會跨頁,要實現這一功能需要加入

\tcbuselibrary{skins, breakable}

然後在使用時,加入參數:breakable=true。爲了更好的顯示,最好加入enhanced參數,否則在第一頁顯示的文本框下面會出現邊框。

以上代碼的執行效果如下:

tcolorbox宏包應用示例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章