每次跟朋友安利
當時設計天琴一號加速度計的控制器參數,出於數字控制參數切換的便利性,瘋狂設計了十幾套參數。然而寫報告的時候傻了:老闆要求每套參數六個自由度的詳細參數、指標都匯總到表格裡。要是手動錄入,恐怕得折騰一天,於是我想到了一個騷操作:MATLAB設計完參數後以
每每想到這裡都會想到 miHoYo 裡的 「Tech Otakus Save the World」。然而更高技術的朋友會問:「你為什麼不直接用MATLAB輸出到EXCEL呢?你不會不知道 writetable 這一系列命令吧?不會吧不會吧?」 唔……愛琴海警告。
廢話不多說,趕緊進入正題,はじめましょう開始吧。
認識浮動體如果採用 $\rm \LaTeX$ 進行編譯後,生成的文檔中,這裡是正常的兩端對齊文字。
\begin{center}
這裡是居中的文字。
\end{center}環境是可以嵌套的,例如上面的內容在正文區,而正文區開始於 \begin{document} ,說明正文是處於 document 環境下的。
可以想像,一般的圖表都採用居中的格式,應當分別處於獨立的環境中,
為此提供了 table 和 figure 環境。對於上例這樣一般的環境,它僅提供局部的格式變動,不會影響上下文之間的位置關係。而 table 和 figure 卻與之不同,它們被稱作浮動體,意思是源碼之間的相對位置與編譯後生成文檔中的相對位置可能是不同的。比如源碼中的順序是先寫「如圖 3 所示」,然後再插入圖片,生成的文檔可能會先插入圖片,再出現「如圖 3 所示」。 圖表採用這種浮動體的原因有
一般文檔會以交叉引用的方式指明圖表(比如「如圖 3 所示」,而不是「如下圖所示」),因此圖表與正文的相對位置沒有過於嚴格的要求;當前頁面內的剩餘版面可能無法完整插入圖片或者表格,如果留空白會導致排版不好看,因此可以將圖表移位,用後文填充頁面;默認的排版美學:同一頁內連續使用圖表或出現過多圖表會使頁面顯得比較空洞而不好看。 使用浮動體(table 和 figure環境)時可以用中括號添加可選參數,表示可以浮動的位置,可選以下幾個參數或其組合:
h:允許在當前位置(here),即源碼中插圖與正文的相對位置保持一致;有時候
使用插圖默認的排版美學會讓人感到困惑,因此浮動體還支持採用 ! 選項突破默認的限制,例如我自己插圖的時候經常會採用 \begin{figure}[!htb] 的設置。 為了在文檔中插入圖片,需要對
的功能進行「擴展」,在導言區使用 \usepackage{graphicx} 宏包即可。這個宏包提供的 \includegraphics 命令可以方便地插入 pdf、eps、jpg、png 等常見格式的圖片,使用方法和示例如下。 % 導言區添加 \usepackage{graphicx}
% \includegraphics[<選項>]{<圖片文件名>}
\begin{figure}[!htb] % 還記得剛說的圖片放在浮動體內嗎?
\centering % 設置圖片居中
% 插入圖片,圖片寬度為 0.7 倍正文寬度,圖片文件為 misaka.png
\includegraphics[width=0.7\textwidth]{misaka.png}
\caption{御坂美琴} % 正文中的圖名
\label{fig:misaka} % 交叉引用的標籤,以後再說哈
\end{figure}以這種方法插圖時,圖片放置的位置必須在搜索路徑中,或者使用絕對路徑。一般情況下,我們會把正文圖片收集在 figures 文件夾內,並在導入宏包後立即將該文件夾添加到圖片的搜索路徑,如下
\usepackage{graphicx}
\graphicspath{ % 添加搜索路徑,多個路徑時用花括號區分
{./figure/}
{./figures/}
}如此就可以實現正文的插圖了。實際上,
❝是支持直接繪圖的,有興趣的小夥伴可以在命令行使用 texdoc pgfmanual 查看具體方法。 1300 多頁的說明文檔直接給我勸退了……有學會的小夥伴教教我哈。通常我還是使用其他軟體繪圖,導出 pdf 後在
❞繪製表格中插圖。不過,Inkscape 確實是一款很好用的矢量繪圖開源軟體。 繪製表格所需要的基本環境不需要額外的宏包進行擴展,但是依然推薦兩個宏包:tabularx 和 booktabs,前者提供了定寬表格的格式,後者則提供了標準的三線表樣式。下面我們先來看一個例子
\begin{table}[hbp]
\centering
\caption{頁碼數字格式}
\label{tab:pagenum}
\begin{tabular}{ll}
\toprule
格式 & 說明 \\
\midrule
arabic & 阿拉伯數字 \\
roman & 小寫的羅馬數字 \\
Roman & 大寫的羅馬數字 \\
alph & 小寫的字符形式 \\
Alph & 大寫的字符形式 \\
\bottomrule
\end{tabular}
\end{table}生成文檔的效果如下圖所示。
表格示例 我們來分析表格的代碼:我們在最外圍申明了表格所處的 table 環境,這是將表格整體作為浮動體;然後設置該環境下內容居中顯示;由於表格的標題一般在表格上方,所以先生成標題並打上標籤;剩下的一大塊便是由 tabular 環境構造的表格。
tabular 環境是用來構造表格本體的,該環境有一個參數用來指明列格式,常用的列格式包括:
*{<計數>}{<列格式說明>}:將給定列格式按計數重複多次。諸位如果記不住這麼多格式,只記住 l、c、r 就夠基本使用了,有多少列就寫多少個 l、c、r。
在表內,採用符號 & 指明對齊位置, 並使用 \\ 進行換行。表格中可以使用 \hline 繪製橫線,或使用\cline{<開始>-<結束>} 指定橫線的範圍。booktabs 宏包提供了標準三線表的橫線,可使用命令 \toprule 、 \midrule、\bottomrule分別繪製頂部橫線、中間橫線和底部橫線。為了像 \cline 那樣繪製指定位置的橫線,該宏包還提供了 \cmidrule 命令。表格中繪製與單元格等高的豎線可用 \vline 命令。
如上面的例子所示,在不單獨指定列寬的情況下,tabular 環境可以根據內容自動改變表格寬度,這在絕大多數情況下是非常好用的。然而有時候我們希望指定表格的總寬度,這就需要tabularx宏包提供的tabularx 環境。該環境在指定列格式之前必須指定表格的總寬度。同時,該宏包提供了一個特殊的列格式 X,它能夠根據總寬度和表的內容自動改變列寬,也可以和其他列格式一起使用。
寫了不少了,更詳細的使用幫助可使用 texdoc <宏包名> 查看。不過,現在有很多 在線製作
Reference[1]表格[1] 的工具,大家都可以嘗試。 在線製作
表格: https://tableconvert.com/