latex 三线表_LaTeX学习记录(3):使用图表
學習記錄(3):使用圖表
每次跟朋友安利 的時候我都會講這么一個故事:
?當時設計天琴一號加速度計的控制器參數,出于數字控制參數切換的便利性,瘋狂設計了十幾套參數。然而寫報告的時候傻了:老板要求每套參數六個自由度的詳細參數、指標都匯總到表格里。要是手動錄入,恐怕得折騰一天,于是我想到了一個騷操作:MATLAB設計完參數后以 表格代碼的形式格式化輸出到 tex 文件,編譯生成 PDF 后用 Acrobat 轉成 Word,就可以復制了。就這樣,10分鐘不到的時間就把整個表格做完了。
?每每想到這里都會想到 miHoYo 里的 「Tech Otakus Save the World」。然而更高技術的朋友會問:“你為什么不直接用MATLAB輸出到EXCEL呢?你不會不知道 writetable 這一系列命令吧?不會吧不會吧?” 唔……愛琴海警告。
廢話不多說,趕緊進入正題,はじめましょう開始吧。
認識浮動體
有很多“環境”的概念,在代碼里就體現為采用 \begin{} 和 \end{} 括起來的部分。環境一般用于局部的格式設置或者功能擴展,比如正常寫作時采用的是兩端對齊,如果想臨時居中某內容時,可以使用 center 環境,如
如果采用?$\rm?\LaTeX$?進行編譯后,生成的文檔中,這里是正常的兩端對齊文字。\begin{center}
????這里是居中的文字。
\end{center}
環境是可以嵌套的,例如上面的內容在正文區,而正文區開始于 \begin{document} ,說明正文是處于 document 環境下的。
可以想象,一般的圖表都采用居中的格式,應當分別處于獨立的環境中, 為此提供了 table 和 figure 環境。對于上例這樣一般的環境,它僅提供局部的格式變動,不會影響上下文之間的位置關系。而 table 和 figure 卻與之不同,它們被稱作浮動體,意思是源碼之間的相對位置與編譯后生成文檔中的相對位置可能是不同的。比如源碼中的順序是先寫“如圖 3 所示”,然后再插入圖片,生成的文檔可能會先插入圖片,再出現“如圖 3 所示”。
圖表采用這種浮動體的原因有
- 一般文檔會以交叉引用的方式指明圖表(比如“如圖 3 所示”,而不是“如下圖所示”),因此圖表與正文的相對位置沒有過于嚴格的要求;
- 當前頁面內的剩余版面可能無法完整插入圖片或者表格,如果留空白會導致排版不好看,因此可以將圖表移位,用后文填充頁面;
- 默認的排版美學:同一頁內連續使用圖表或出現過多圖表會使頁面顯得比較空洞而不好看。
使用浮動體(table 和 figure環境)時可以用中括號添加可選參數,表示可以浮動的位置,可選以下幾個參數或其組合:
- h:允許在當前位置(here),即源碼中插圖與正文的相對位置保持一致;
- t:允許在當前頁面的最頂端(top);
- b:允許在當前頁面的最低端(bottom);
- p:允許將圖片放在單獨一頁(page)。
有時候 默認的排版美學會讓人感到困惑,因此浮動體還支持采用 ! 選項突破默認的限制,例如我自己插圖的時候經常會采用 \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:本列右對齊;
- p{}:指定列寬并允許自動換行;
- |:畫一條豎線,不占據表項計數;
- @{}:任意添加內容,不占表項計數;
- *{}{}:將給定列格式按計數重復多次。
諸位如果記不住這么多格式,只記住 l、c、r 就夠基本使用了,有多少列就寫多少個 l、c、r。
在表內,采用符號 & 指明對齊位置, 并使用 \\ 進行換行。表格中可以使用 \hline 繪制橫線,或使用\cline{-} 指定橫線的范圍。booktabs 宏包提供了標準三線表的橫線,可使用命令 \toprule 、 \midrule、\bottomrule分別繪制頂部橫線、中間橫線和底部橫線。為了像 \cline 那樣繪制指定位置的橫線,該宏包還提供了 \cmidrule 命令。表格中繪制與單元格等高的豎線可用 \vline 命令。
如上面的例子所示,在不單獨指定列寬的情況下,tabular 環境可以根據內容自動改變表格寬度,這在絕大多數情況下是非常好用的。然而有時候我們希望指定表格的總寬度,這就需要tabularx宏包提供的tabularx 環境。該環境在指定列格式之前必須指定表格的總寬度。同時,該宏包提供了一個特殊的列格式 X,它能夠根據總寬度和表的內容自動改變列寬,也可以和其他列格式一起使用。
寫了不少了,更詳細的使用幫助可使用 texdoc 查看。不過,現在有很多 在線制作 表格[1] 的工具,大家都可以嘗試。
Reference
[1]在線制作 表格: https://tableconvert.com/
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的latex 三线表_LaTeX学习记录(3):使用图表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 磁卡门锁怎么配卡_样式多的铜工艺品怎么设
- 下一篇: axios vue 加载效果动画_vue