1. 程式人生 > >Latex學習筆記(五)——Latex模板學習總結

Latex學習筆記(五)——Latex模板學習總結

前言:

        最近參加了數學建模大賽,整個論文都是使用Latex工具排版的,至此感覺到了它的魅力。但是由於論文模板是主辦方提供的,在排版格式定義檔案(.cls檔案)中已經設定好了所有環境,因此用起來還是很簡單的。比賽結束以後,打算學習模板的製作過程,因此研讀了該大賽模板的 cls 檔案。

一、巨集包Listings的使用

       Listings 是專用於程式碼排版的 Latex 巨集包,可對程式碼中的關鍵詞、註釋和字串等使用不同的字型和顏色,也可以為程式碼新增邊框、背景等風格。 Listings 有許多引數控制輸出,如果它不支援內建的程式語言,我們還可以自己定義。

       下面顯示的程式碼 Lstlisting 環境用於設定隨附的原始碼。我們將 LATEX程式碼放入 texstudio 編輯器中,然後通過 elatex 執行它。latex原始碼如下:

在生成的PDF中的顯示效果如下:

1.1 顯示行號索引

     我們可以程式碼片段加上行號索引,行號可用於所有顯示的列表,例如:左邊的每個小數字,與程式程式碼的距離為5pt:

在pdf中的顯示效果為:

1.2 製表符

       如果程式的程式碼中包含製表符,則可能會在pdf中獲得意想不到的輸出效果。為了更好地說明,我們來比較使用tabsize = 2和tabsize = 4的區別。 請注意,\ lstset 會修改同一環境中所有後續程式碼的值。 這不是問題,如果想要單獨更改某個程式程式碼的設定,請使用可選引數。

tabsize = 2 的設定效果如下:

編譯後的顯示效果:

tabsize = 6 的設定效果如下:

編譯後的顯示效果:

1.3 新增邊框

          aboveskip and belowskip 引數分別控制上邊距和下邊距,frame 選擇是否為程式碼新增邊框,其可選的值有: none 、leftline、 topline、bottomline、lines (top and bottom)、 single ( for single frames )、or shadowbox。

          例如我們現在給程式碼新增 ‘single’ 形式的邊框,如下:

編譯後的效果如下所示:

然後給程式碼新增 ‘lines’ 形式的邊框,如下:

編譯後的效果:

1.4 背景顏色

      我們可以給程式碼設定背景顏色,不過需要先匯入顏色包,然後可以通過backgroundcolor =(顏色命令)請求彩色背景。有多種方法可以手動將顏色定義為所需的色調,接下來先介紹如何進行自定義顏色。

     在Latex文件中使用顏色的最簡單方法是匯入巨集包 color 或 xcolor 。 兩個包都提供了一組用於顏色操作的通用命令,但後者更靈活,並支援更多的顏色模型。首先我們自定義幾種顏色,使用 \definecolor 來自定義顏色的方法如下:

\usepackage{xcolor}

\definecolor{cRed}{RGB}{0,255,0}
\definecolor{cBlue}{rgb}{0,0,1}
\definecolor{gray}{rgb}{0.5,0.5,0.5}

\colorlet{Mycolor1}{gray!10!}
% 建立了一種名為 Mycolor1 的新顏色,此顏色具有原始gray強度的10%
% 我們可以將其視為10%gray和90%白色的混合物

\color{Mycolor1}{我是自定義的顏色}

     命令\ definecolor有三個引數:新顏色的名稱,模型和顏色定義。粗略地說,每個數字代表您新增到構成最終顏色的混合中的每種顏色的數量。rgb:紅色,綠色,藍色。在0和1之間的三個逗號分隔值定義顏色的元件。RGB:與rgb相同,但數字是0到255之間的整數。

編譯後的效果如下:

1.5 設定外觀

       basicstyle = (style){ } 可以設定基本的風格,我們可以使用  \footnotesize、\small、 \itshape、 \ttfamily或者它們的組合作為style。此外,還有設定註釋、字串以及關鍵詞的顯示風格的引數,如:commentstyle=(style) { }、stringstyle=(style){ } 、keywordstyle=(style){ }。

如下所示:

編譯後的效果:

1.6 總結

        其他更加詳細的內容請參照巨集包listings的使用者手冊。我在我的 cls 檔案裡面設定 lstset 環境如下:

%-----------------------------匯入必要的巨集包------------------------------------
% 頁面佈局
\RequirePackage{geometry}
% 數學巨集包
\RequirePackage{amsmath}
\RequirePackage{amsfonts}
\RequirePackage{amssymb}
\RequirePackage{bm}

% 設定顏色
\RequirePackage{xcolor}
% 插入圖片
\RequirePackage{graphicx} 
% 表格
\RequirePackage{tabularx,array}
%% 長表格
\RequirePackage{longtable}
%% booktabs 提供了\toprule 等命令.
\RequirePackage{booktabs}
%% multirow 支援在表格中跨行
\RequirePackage{multirow}
%% 調整間隔, 讓表格更好看些
\RequirePackage{bigstrut}
%% 在跨行表格中輸入定界符
\RequirePackage{bigdelim}
% 保護脆落命令
\RequirePackage{cprotect}

%-----------------------------匯入必要的巨集包------------------------------------



%---------------設定latex中插入的程式程式碼格式----------------------------------------

%匯入listings巨集包
\RequirePackage{listings}

%先自定義三種顏色
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

%設定lstset環境
\lstset{
	frame=tb,
	aboveskip=3mm,
	belowskip=3mm,
	showstringspaces=false,
	columns=flexible,
	framerule=1pt,
	rulecolor=\color{gray!35},
	backgroundcolor=\color{gray!5},
	basicstyle={\small\ttfamily},
	numbers=left,
	numberstyle=\tiny\color{gray},
	keywordstyle=\color{blue},
	commentstyle=\color{dkgreen},
	stringstyle=\color{mauve},
	breaklines=true,
	breakatwhitespace=true,
	tabsize=3,
}

%---------------設定latex中插入的程式程式碼格式---------------------------------------

 這部分程式碼可以設定好了在tex檔案中新增程式程式碼的格式。

二、設定目錄頁的格式 

           我們可以通過下面的程式碼定製自己的目錄樣式:


%----------------------------設定目錄格式-----------------------------------------------

% 節的目錄格式
\titlecontents{section}[0pt]{\vspace{2mm}\bfseries\heiti}
{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage}
% 小節的目錄格式
\titlecontents{subsection}[30pt]{\songti}
{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage}

\titlecontents{subsubsection}[55pt]{\songti}
{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage}


% itletoc 巨集包用於自定義目錄樣式,其中最常用的是下面這條目錄樣式命令。
% \titlecontents 命令來設定不同級別目錄項的格式:
% \titlecontents{章節名稱}[左端距離]{標題字型、與上文間距等}{標題序號}{空}{引導符和頁碼}[與下文間距]
% (1) 其中0pt([左端距離])是目錄項到版芯左邊界的距離;\vspace{2mm}表示與上文留出一定的垂直距離,該距離為2mm;
% \bfseries\heiti 把整條目錄項的字型設為黑體。
% (2) 後面一項是設定目錄項的頭部,並在其後留出一個漢字寬度的距離。緊跟的是設定目錄項主體的格式,
% 這裡因為跟目錄項頭部相同而空置。
% (3) 再後面是設定填充命令和頁碼。這裡用\titlerule*命令畫出填充點,
% 這裡是把垂直居中的實心圓點作為填充符號(習慣上中文不採用居下的填充點), 
% 並以10pt為包含一個填充符號的水平盒子的寬度,即這個寬度越小,填充點越緊密; 填充點後加上頁碼 \contentspage。

% 注意:用 titlesec 巨集包可以在標題中加一些填充物,比如:一條水平線、一排連續或不連續的點等等。用以下三個命令來實現:
% (1) \titleline[<align>]{<horizontalmaterial>}
% 其中中 <align> 表示對齊方式,有三個引數 l、c、r,分別代表左對齊、居中對齊、右對齊;
% <horizontal material> 是要填充的材料,可以是文字、符號等等。
% (2) \titlerule [<height>]:表示在標題中新增一條水平線,<height> 是線的寬度。
% (3) \titlerule ∗[<width >]{<text>}:用於在標題中新增一條填充物,<width> 為填充物的寬度,<text> 為填充的文字或符號。

%----------------------------設定目錄格式-----------------------------------------------

三、中文章節標題設定

    當然,每一個標題、子標題的格式我們也可以設定,如下:

%--------------------------------中文標題格式設定-------------------------------------------------------------

% 通過 setcounter 命令來控制目錄深度,如顯示三級目錄
\setcounter{secnumdepth}{3}
\def\@seccntformat#1{\csname the#1\endcsname\ \ }

% 更改節、子節等的標題前序號的格式
\renewcommand\thesection{\arabic{section}.}
\renewcommand\thesubsection{\arabic{section}\thinspace.\thinspace\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection\thinspace.\thinspace\arabic{subsubsection}}

% 節標題格式, 居中,字型採用 \normalfont,大小採用 \normalsize
\renewcommand\section{\@startsection{section}{1}{\[email protected]}%
 	{2.5ex \@plus -1ex \@minus -.2ex}%
	{2.3ex \@plus.2ex}%
	{\bfseries\centering\zihao{4}\heiti}}
\renewcommand\subsection{\@startsection{subsection}{2}{\[email protected]}%
	{1.25ex\@plus -1ex \@minus -.2ex}%
	{1.25ex \@plus .2ex}%
	{\normalfont\normalsize\bfseries}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\[email protected]}%
	{1.25ex\@plus -1ex \@minus -.2ex}%
	{1.2ex \@plus .2ex}%
	{\normalfont\normalsize\bfseries}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\[email protected]}%
	{3.25ex \@plus1ex \@minus.2ex}%
	{-1em}%
	{\normalfont\normalsize\bfseries}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
	 {3.25ex \@plus1ex \@minus .2ex}%
	 {-1em}%
	 {\normalfont\normalsize\bfseries}}
 
 

%-------------------------------中文標題格式設定-------------------------------------------------------------

四、插圖、表格、列表以及虛擬碼等浮動體的環境設定

      類似於插圖、表格、演算法等浮動題的格式我們也可以設定,如下:

%------------------------浮動環境設定-----------------------------------------------------------
% 下面給出的命令用來控制一頁中有多大比例的區域可用來放置浮動物件(這裡的比例是指浮動物件的高度除以正文高度\textheight)。
% 前面三個命令只作用於文字頁,而最後一個命令只作用於浮動頁。這些命令的值可以用 \renewcommand 來修改。
% (1) \textfraction:頁面中必須用來排放文字的最小比例。預設值為 0.2,即要求每頁的文字至少佔據 20%。
% 而這通常不是我們想要的, 我們將這個要求降低到 5%。
% (2) \topfraction:頁面頂部可以用來放置浮動物件的高度與整個頁面高度的最大比例。預設值為 0.7,即
% 放置在頁頂部的浮動物件所佔的高度不得超過整個頁面高度 70%。
% (3) \bottomfraction: 頁面底部可以用來放置浮動物件的高度與整個頁面高度的最大比例。預設值為 0.3。
% 有時如果多個浮動環境連續放在一起, latex也會將它們分在幾個不同頁,即使它們可在同一頁放得下。
% 我們可以通過修改 \topfraction 和 \bottomfraction 分別設定頂端和底端的浮動環境的最大比例。
% (4) \floatpagefraction: 浮動頁中必須由浮動物件佔用的最小比例。因此在一浮動頁中空白所佔的比例
% 不會超過 1 - \floatpagefraction。預設值為 0.5。
% 有時 LaTeX 會把一個浮動環境單獨放在一頁,我們通過設定要求這個環境至少要佔據 85% 才能單獨放在一頁。

 \renewcommand*{\textfraction}{0.05}
 \renewcommand*{\topfraction}{0.9}
 \renewcommand*{\bottomfraction}{0.8}
 \renewcommand*{\floatpagefraction}{0.85}

%------------------------浮動環境設定----------------------------------------------------------- 
 
 
 
%------------------------插圖、表格以及列表環境設定----------------------------------------------------------- 
 
% 關於圖片巨集包graphicx,如果圖片沒有指定字尾, 依次按下列順序搜尋
\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}

 % 設定圖表搜尋路徑, 可以給圖表資料夾取如下名字
\graphicspath{{figures/}{figure/}{pictures/}{picture/}{pic/}{pics/}{image/}{images/}}

% 宣告標題的字型、字號
\DeclareCaptionFont{song}{\songti}
\DeclareCaptionFont{minusfour}{\zihao{-4}}  

% 如果文章中有section,那麼插圖示題標籤將是1.1, 1.2, 2.1等。 
% 我們可以如下設定,該命令指定了一個將更改的標籤(如: \thefigure )以及希望顯示的標籤
% 型別(如:\arabic{figure} ), 也就是說要將插圖的序列號顯示為阿拉伯數字,如1, 2, 3等。
\renewcommand{\thefigure}{\thesection.\arabic{figure}}

% 可以使用 \captionsetup 設定標題樣式,這樣後面所有的標題樣式都是根據 \captionsetup 重新設定的,
% 即 \captionsetup[FLOAT_TYPE]{OPTIONS}
% 其中可選引數FLOAT_TYPE 可以是table、subtable、figure、subfigure等。
\captionsetup[figure]{ 
	format=hang,                     % 標題從第二行開始都有縮排, 應該和 justification=raggedright 的效果一樣.
	labelsep=quad,                   % 分隔符是一個空格,指標題名稱和序號直接的空隙
	font={song,minusfour,bf},        % 將fugure環境中的字型設定為: 宋體小四
	position=bottom                  % position=bottom, 不代表標題放在下面, 標題仍放在你放\caption的位置
}


% 表格環境設定
\captionsetup[table]{%
	format=hang,   % 標題從第二行開始都有縮排, 應該和 justification=raggedright 的效果一樣.
	labelsep=quad, % 分隔符是一個空格
	font={song,minusfour,bf}, % 表的字型, 宋體小四
	position=top % position=bottom, 不代表標題放在下面, 標題仍放在你放\caption的位置.
}


% 列表環境設定
% 列表就是將所要表達的內容分為若干個條目並按一定的順序排列,達到簡明、直觀的效果。在論文的寫作中會經常使用到列表。
% LaTeX 中常見的列表環境有 enumerate、itemize 和 description。這三種列表環境的主要區別是列表項標籤的不同。
% enumerate 是有序的列表; itemize 以圓點作為標籤;description 是解說列表,可以指定標籤。
\setlist{%
	topsep=0.3em, % 列表頂端的垂直空白
	partopsep=0pt, % 列表環境前面緊接著一個空白行時其頂端的額外垂直空白
	itemsep=0ex plus 0.1ex, % 列表項之間的額外垂直空白
	parsep=0pt, % 列表項內的段落之間的垂直空白
	leftmargin=1.5em, % 環境的左邊界和列表之間的水平距離
	rightmargin=0em, % 環境的右邊界和列表之間的水平距離
	labelsep=0.5em, % 包含標籤的盒子與列表項的第一行文字之間的間隔
	labelwidth=2em % 包含標籤的盒子的正常寬度;若實際寬度更寬,則使用實際寬度。
}

%------------------------插圖、表格以及列表環境設定----------------------------------------------------------- 




%------------------------演算法(虛擬碼)的環境設定---------------------------------------------------------- 

\floatname{algorithm}{演算法}  
\renewcommand{\algorithmicrequire}{\textbf{輸入:}}  
\renewcommand{\algorithmicensure}{\textbf{輸出:}}  

%------------------------演算法(虛擬碼)的環境設定---------------------------------------------------------- 

五、總結

       學習了各個部分的知識以後,我對模板的 cls 檔案的內容做了整理,以後根據自己的需求,對 cls 檔案的內容進行更改即可滿足使用。整理後的模板 cls  檔案內容如下:

\NeedsTeXFormat{LaTeX2e}[1995/12/01]

\ProvidesClass{gmcmthesis}
              [2018/09/11 v2.3 update  gmcmthesis by  latexstudio.net]


\newif\[email protected]@bwprint\@[email protected]
\newif\[email protected]@preface\@[email protected]

\newcommand\[email protected]@keywords{}
\newcommand*\[email protected]@tihao{}
\newcommand*\[email protected]@baominghao{}
\newcommand*\[email protected]@schoolname{}
\newcommand*\[email protected]@membera{}
\newcommand*\[email protected]@memberb{}
\newcommand*\[email protected]@memberc{}
\newcommand*\[email protected]@supervisor{}
\newcommand*\[email protected]@yearinput{}
\newcommand*\[email protected]@monthinput{}
\newcommand*\[email protected]@dayinput{}


\DeclareOption{colorprint}{\@[email protected]}
\DeclareOption{bwprint}{\@[email protected]}
\DeclareOption{withoutpreface}{\@[email protected]}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexart}}

\ExecuteOptions{colorprint}
\ProcessOptions\relax



\LoadClass[a4paper,cs4size]{ctexart}
 
\RequirePackage{ifxetex}
\RequireXeTeX
\ifxetex\else
\ClassError{mcmthesis}{You must use the `xelatex' driver\MessageBreak Please choose `xelatex'}{%
Just choose `xelatex', no `pdflatex' or `latex' and so on.}
\fi



%---------------------匯入必要的巨集包----------------------------------------
% 數學巨集包
\RequirePackage{amsmath}
\RequirePackage{amsfonts}
\RequirePackage{amssymb}
\RequirePackage{bm}

% 設定顏色
\RequirePackage{xcolor}
% 插入圖片
\RequirePackage{graphicx} 
% 表格
\RequirePackage{tabularx,array}
%% 長表格
\RequirePackage{longtable}
%% booktabs 提供了\toprule 等命令.
\RequirePackage{booktabs}
%% multirow 支援在表格中跨行
\RequirePackage{multirow}
%% 調整間隔, 讓表格更好看些
\RequirePackage{bigstrut}
%% 在跨行表格中輸入定界符
\RequirePackage{bigdelim}
% 保護脆落命令
\RequirePackage{cprotect}


% 首行縮排
\RequirePackage{indentfirst}
% 設定浮動體的標題
\RequirePackage{caption}
% 定製列表環境
\RequirePackage{enumitem}
% 下劃線 
\RequirePackage{ulem}
% 尺寸計算
\RequirePackage{calc}
\RequirePackage{titletoc,url}
%參考文獻
\RequirePackage[numbers]{natbib}
\setlength{\bibsep}{0pt plus 0.3ex}

\RequirePackage{etoolbox}
\AtBeginEnvironment{thebibliography}{%
	\phantomsection
	\addcontentsline{toc}{section}{\refname}
}
% 超連結 hyperref 的設定
\RequirePackage{hyperref}

%---------------------匯入必要的巨集包----------------------------------------




%---------------設定latex中插入的程式程式碼格式----------------------------------------

%匯入listings巨集包
\RequirePackage{listings}

%先自定義三種顏色
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

%設定lstset環境
\lstset{
	frame=tb,
	aboveskip=3mm,
	belowskip=3mm,
	showstringspaces=false,
	columns=flexible,
	framerule=1pt,
	rulecolor=\color{gray!35},
	backgroundcolor=\color{gray!5},
	basicstyle={\small\ttfamily},
	numbers=left,
	numberstyle=\tiny\color{gray},
	keywordstyle=\color{blue},
	commentstyle=\color{dkgreen},
	stringstyle=\color{mauve},
	breaklines=true,
	breakatwhitespace=true,
	tabsize=3,
}

%---------------設定latex中插入的程式程式碼格式---------------------------------------



%-----------------------設定頁面佈局-------------------------------------
% 匯入頁面佈局的巨集包
\RequirePackage{geometry}
\geometry{top=30.0mm,bottom=25.0mm,left=31.7mm,right=31.7mm,headsep=8mm}
% 利用巨集包 geometry設定上、下、左、右的頁邊距以及標題和正文之間的間距

\renewcommand*{\baselinestretch}{1.38}
% 將行間距調整為1.38倍行距
%-----------------------設定頁面佈局-------------------------------------



%----------------------設定首行縮排------------------------------
% 匯入首行縮排用的巨集包
\RequirePackage{indentfirst}	
% 每行縮排兩個漢字
\setlength{\parindent}{2em}
%----------------------設定首行縮排------------------------------



%----------------------設定文章字型------------------------------
% 設定英文字型
\setmainfont{Times New Roman}    %襯線字型  
\setmonofont{Courier New}        %無襯線字型
\setsansfont{Arial}              %等寬字型,一般是印表機字型(中文都是等寬的)

% 設定中文字型
\setCJKmainfont[AutoFakeBold = {2.15},ItalicFont={[simkai.ttf]}]{SimSun}
\setCJKfamilyfont{xw}{STXinwei}


\ifx\lishu\undefined%
\setCJKfamilyfont{zhli}{LiSu}
\newcommand*{\lishu}{\CJKfamily{zhli}} 
\else
\fi
\newcommand*{\xinwei}{\CJKfamily{xw}} 
%\newcommand*{\lishu}{\CJKfamily{zhli}}

%----------------------設定文章字型------------------------------



% 修改tabular 環境, 設定表格中的行間距為正文行間距.
\let\[email protected]\tabular
\let\[email protected]\endtabular
\renewenvironment{tabular}%
{\bgroup%
	\renewcommand{\arraystretch}{1.38}%
	\[email protected]}%
{\[email protected]\egroup}

 
% 數學環境, 定理等設定
\newtheorem{definition}{\[email protected]@definition}
\newtheorem{theorem}{\[email protected]@theorem}
\newtheorem{lemma}{\[email protected]@lemma}
\newtheorem{corollary}{\[email protected]@corollary}
\newtheorem{assumption}{\[email protected]@assumption}
\newtheorem{conjecture}{\[email protected]@conjecture}
\newtheorem{axiom}{\[email protected]@axiom}
\newtheorem{principle}{\[email protected]@principle}
\newtheorem{problem}{\[email protected]@problem}
\newtheorem{example}{\[email protected]@example}
\newtheorem{proof}{\[email protected]@proof}
\newtheorem{solution}{\[email protected]@solution}



%------------------------浮動環境設定-----------------------------------------------------------

% 下面給出的命令用來控制一頁中有多大比例的區域可用來放置浮動物件
% (這裡的比例是指浮動物件的高度除以正文高度\textheight)。
% 前面三個命令只作用於文字頁,而最後一個命令只作用於浮動頁。這些命令的值可以用 \renewcommand 來修改。
% (1) \textfraction:頁面中必須用來排放文字的最小比例。預設值為 0.2,即要求每頁的文字至少佔據 20%。
% 而這通常不是我們想要的, 我們將這個要求降低到 5%。
% (2) \topfraction:頁面頂部可以用來放置浮動物件的高度與整個頁面高度的最大比例。預設值為 0.7,即
% 放置在頁頂部的浮動物件所佔的高度不得超過整個頁面高度 70%。
% (3) \bottomfraction: 頁面底部可以用來放置浮動物件的高度與整個頁面高度的最大比例。預設值為 0.3。
% 有時如果多個浮動環境連續放在一起, latex也會將它們分在幾個不同頁,即使它們可在同一頁放得下。
% 我們可以通過修改 \topfraction 和 \bottomfraction 分別設定頂端和底端的浮動環境的最大比例。
% (4) \floatpagefraction: 浮動頁中必須由浮動物件佔用的最小比例。因此在一浮動頁中空白所佔的比例
% 不會超過 1 - \floatpagefraction。預設值為 0.5。
% 有時 LaTeX 會把一個浮動環境單獨放在一頁,我們通過設定要求這個環境至少要佔據 85% 才能單獨放在一頁。

\renewcommand*{\textfraction}{0.05}
\renewcommand*{\topfraction}{0.9}
\renewcommand*{\bottomfraction}{0.8}
\renewcommand*{\floatpagefraction}{0.85}

%------------------------浮動環境設定----------------------------------------------------------- 

 
%------------------插圖、表格以及列表環境設定--------------------------------------------------- 

% 關於圖片巨集包graphicx,如果圖片沒有指定字尾, 依次按下列順序搜尋
\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}

% 設定圖表搜尋路徑, 可以給圖表資料夾取如下名字
\graphicspath{{figures/}{figure/}{pictures/}{picture/}{pic/}{pics/}{image/}{images/}}

% 宣告標題的字型、字號
\DeclareCaptionFont{song}{\songti}
\DeclareCaptionFont{minusfour}{\zihao{-4}}  

% 如果文章中有section,那麼插圖示題標籤將是1.1, 1.2, 2.1等。 
% 我們可以如下設定,該命令指定了一個將更改的標籤(如: \thefigure )以及希望顯示的標籤
% 型別(如:\arabic{figure} ), 也就是說要將插圖的序列號顯示為阿拉伯數字,如1, 2, 3等。
\renewcommand{\thefigure}{\thesection.\arabic{figure}}

% 可以使用 \captionsetup 設定標題樣式,這樣後面所有的標題樣式都是根據 \captionsetup 重新設定的,
% 即 \captionsetup[FLOAT_TYPE]{OPTIONS}
% 其中可選引數FLOAT_TYPE 可以是table、subtable、figure、subfigure等。
\captionsetup[figure]{ 
	format=hang,                     % 標題從第二行開始都有縮排, 應該和 justification=raggedright 的效果一樣.
	labelsep=quad,                   % 分隔符是一個空格,指標題名稱和序號直接的空隙
	font={song,minusfour,bf},        % 將fugure環境中的字型設定為: 宋體小四
	position=bottom                  % position=bottom, 不代表標題放在下面, 標題仍放在你放\caption的位置
}


% 表格環境設定
\captionsetup[table]{%
	format=hang,   % 標題從第二行開始都有縮排, 應該和 justification=raggedright 的效果一樣.
	labelsep=quad, % 分隔符是一個空格
	font={song,minusfour,bf}, % 表的字型, 宋體小四
	position=top % position=bottom, 不代表標題放在下面, 標題仍放在你放\caption的位置.
}


% 列表環境設定
% 列表就是將所要表達的內容分為若干個條目並按一定的順序排列,達到簡明、直觀的效果。在論文的寫作中會經常使用到列表。
% LaTeX 中常見的列表環境有 enumerate、itemize 和 description。這三種列表環境的主要區別是列表項標籤的不同。
% enumerate 是有序的列表; itemize 以圓點作為標籤;description 是解說列表,可以指定標籤。
\setlist{%
	topsep=0.3em, % 列表頂端的垂直空白
	partopsep=0pt, % 列表環境前面緊接著一個空白行時其頂端的額外垂直空白
	itemsep=0ex plus 0.1ex, % 列表項之間的額外垂直空白
	parsep=0pt, % 列表項內的段落之間的垂直空白
	leftmargin=1.5em, % 環境的左邊界和列表之間的水平距離
	rightmargin=0em, % 環境的右邊界和列表之間的水平距離
	labelsep=0.5em, % 包含標籤的盒子與列表項的第一行文字之間的間隔
	labelwidth=2em % 包含標籤的盒子的正常寬度;若實際寬度更寬,則使用實際寬度。
}

%------------------------插圖、表格以及列表環境設定------------------------------------------ 




%------------------------演算法(虛擬碼)的環境設定---------------------------------------------- 
\usepackage{algorithm}  
\usepackage{algpseudocode}  
\usepackage{amsmath}  
\floatname{algorithm}{演算法}
\renewcommand{\algorithmicrequire}{\textbf{輸入:}}   % Use Input in the format of Algorithm  
\renewcommand{\algorithmicensure}{\textbf{輸出:}}    % Use Output in the format of Algorithm 
%------------------------演算法(虛擬碼)的環境設定---------------------------------------- 




%----------------------------設定目錄的超連結--------------------------------------------------------
% \AtBeginDocument{%
	 \hypersetup{%
		% % unicode=false, % hyperref 和 xetex 同時使用時不能開啟 Unicode 選項.
		 hyperfootnotes=true,
		 hyperindex=true,
		 colorlinks=true,
		 bookmarksnumbered=true,
		 bookmarksopen=true,
 		 bookmarksopenlevel=0,
		 allcolors=black,
		 breaklinks=true}%
% }
% \[email protected]@bwprint
% \AtBeginDocument{\hypersetup{hidelinks}}
% \else\relax\fi
\def\UrlAlphabet{%
      \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j%
      \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t%
      \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D%
      \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N%
      \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X%
      \do\Y\do\Z}
\def\UrlDigits{\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
\[email protected]@macro{\UrlBreaks}{\UrlOrds}
\[email protected]@macro{\UrlBreaks}{\UrlAlphabet}
\[email protected]@macro{\UrlBreaks}{\UrlDigits}

%----------------------------設定目錄的超連結--------------------------------------------------------


%----------------------------設定封面--------------------------------------------------------

% 重定義 \maketitle 命令,用於生成封面
\renewcommand{\maketitle}{\par
	\begingroup
	\newpage
	\global\@topnum\[email protected] % Prevents figures from going at top of page.
	\[email protected]      %
	\endgroup
	\global\let\thanks\relax
	\global\let\maketitle\relax
	\global\let\@maketitle\relax
	\global\let\@thanks\@empty
	\global\let\@author\@empty
	\global\let\@date\@empty
	\global\let\@title\@empty
	\global\let\title\relax
	\global\let\author\relax
	\global\let\date\relax
	\global\let\and\relax
}

\def\[email protected]{%
	\newpage
	\[email protected]@preface
	\setcounter{page}{0}
	\def\thepage{0}
	\thispagestyle{empty}%
	\begin{center}
		{\includegraphics{logo}}
		
		\vskip2.75cm
		{\xinwei\zihao{2} \[email protected]@[email protected] \par}
	\end{center}
	
	\vskip2em
	
	% \thispagestyle{gmcmheadings} 
	\renewcommand\arraystretch{1.3}
	\noindent \begin{tabularx}{\textwidth}{lX}
		\zihao{-2}\bfseries 學\qquad 校&\zihao{-2}\bfseries\[email protected]@schoolname\\
		\hline\\[-15pt]
		\zihao{-2}\bfseries 參賽隊號&\zihao{-2}\bfseries\[email protected]@baominghao\\
		\hline\\[-15pt]
		\multirow{3}{*}{\zihao{-2}\bfseries 隊員姓名}&\zihao{-2}\bfseries	 1. \[email protected]@membera\hfill\null\\
		\cline{2-2}\\[-15pt]
		&\zihao{-2}\bfseries 2. \[email protected]@memberb\hfill\null\\
		\cline{2-2}\\[-15pt]
		&\zihao{-2}\bfseries 3.  \[email protected]@memberc\hfill\null\\
		\hline
	\end{tabularx}
	\makenametitle
}

\def\makenametitle{
	\newpage
	\setcounter{page}{1}
	\vspace*{2.3cm}
	\begin{center}
		%{\includegraphics[width=4cm]{logo}}
		
		\vskip.5\baselineskip%
		{\xinwei\zihao{2} \[email protected]@[email protected] \par}
	\end{center}
	
	\vskip1.6cm%
	
	\begin{center}\begin{tabularx}{.95\textwidth}{@{}[email protected]{}}
			{\zihao{4} 題\qquad 目} &\hfill\zihao{3}\heiti \@title\hfill\null\\
			\cline{2-2}
		\end{tabularx}
	\end{center}
}

%--------------------------設定封面-------------------------------------------------------



%--------------------------------中文標題格式設定-----------------------------------------

% 通過 setcounter 命令來控制目錄深度,如顯示三級目錄
\setcounter{secnumdepth}{3}
\def\@seccntformat#1{\csname the#1\endcsname\ \ }

% 更改節、子節等的標題前序號的格式
\renewcommand\thesection{\arabic{section}.}
\renewcommand\thesubsection{\arabic{section}\thinspace.\thinspace\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection\thinspace.\thinspace\arabic{subsubsection}}

% 節標題格式, 居中,字型採用 \normalfont,大小採用 \normalsize
\renewcommand\section{\@startsection{section}{1}{\[email protected]}%
	{2.5ex \@plus -1ex \@minus -.2ex}%
	{2.3ex \@plus.2ex}%
	{\bfseries\centering\zihao{4}\heiti}}
\renewcommand\subsection{\@startsection{subsection}{2}{\[email protected]}%
	{1.25ex\@plus -1ex \@minus -.2ex}%
	{1.25ex \@plus .2ex}%
	{\normalfont\normalsize\bfseries}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\[email protected]}%
	{1.25ex\@plus -1ex \@minus -.2ex}%
	{1.2ex \@plus .2ex}%
	{\normalfont\normalsize\bfseries}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\[email protected]}%
	{3.25ex \@plus1ex \@minus.2ex}%
	{-1em}%
	{\normalfont\normalsize\bfseries}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
	{3.25ex \@plus1ex \@minus .2ex}%
	{-1em}%
	{\normalfont\normalsize\bfseries}}



%-------------------------------中文標題格式設定--------------------------------------




%--------------------------------重定義相關環境和變數-------------------------------------

% 摘要兩個字設定為 4 號.
% 定義摘要環境
\renewenvironment{abstract}{%
	\[email protected]
	\section*{\abstractname}%
	\else
	\begin{center}%
		{\zihao{3}\lishu\abstractname\vspace{\[email protected]}}%
	\end{center}%
	\quotation
	\fi}
{\[email protected]\else\endquotation\newpage\null\fi}
\renewenvironment{quotation}
{\list{}{\listparindent 2em%
		\itemindent \listparindent
		\rightmargin\[email protected]
		\leftmargin\[email protected]
		\parsep \[email protected] \@plus\[email protected]}%
	\item\relax}
{\endlist}


\newcommand\keywords[1]{%
	\renewcommand{\[email protected]@keywords}{#1}
	\par
	\vskip1ex
	{\noindent\zihao{-4}\heiti\[email protected]@keywordsname:}~{\[email protected]@keywords}
}



\renewcommand\appendix{\par
	\setcounter{section}{0}%
	\setcounter{subsection}{0}%
	\gdef\thesection{\appendixname\@Alph\[email protected]}}		

\newcommand*\baominghao[1]{%
	\renewcommand{\[email protected]@baominghao}{#1}}
\newcommand*\schoolname[1]{%
	\renewcommand{\[email protected]@schoolname}{#1}}
\newcommand*\membera[1]{%
	\renewcommand{\[email protected]@membera}{#1}}
\newcommand*\memberb[1]{%
	\renewcommand{\[email protected]@memberb}{#1}}
\newcommand*\memberc[1]{%
	\renewcommand{\[email protected]@memberc}{#1}}

%--------------------------------重定義相關環境和變數--------------------------


%----------------------------以中文重新命名數學定理相關的常量---------------------------

%數學定理相關的常量
\newcommand*{\[email protected]@definition}{定義}
\newcommand*{\[email protected]@theorem}{定理}
\newcommand*{\[email protected]@lemma}{引理}
\newcommand*{\[email protected]@corollary}{推論}
\newcommand*{\[email protected]@assumption}{假設}
\newcommand*{\[email protected]@conjecture}{猜想}
\newcommand*{\[email protected]@axiom}{公理}
\newcommand*{\[email protected]@principle}{定律}
\newcommand*{\[email protected]@problem}{問題}
\newcommand*{\[email protected]@example}{例}
\newcommand*{\[email protected]@proof}{證明}
\newcommand*{\[email protected]@solution}{解}

%----------------------------以中文重新命名數學定理相關的常量-----------------------------------



%----------------------------以中文重新命名相關名稱-----------------------------------------------

% 中文標題名稱
\newcommand*{\[email protected]@abstractname}{摘\qquad\quad 要: }
% 中文關鍵字
\newcommand*{\[email protected]@keywordsname}{關鍵字}
% 以圖片的形式顯示 “第十五屆華為杯數學建模大賽”那幾個大字
\newcommand\[email protected]@[email protected]{\includegraphics{title}}

%----------------------------以中文重新命名相關名稱-----------------------------------------------


 
 
%----------------------------設定目錄格式-----------------------------------------------

% 節的目錄格式
\titlecontents{section}[0pt]{\vspace{2mm}\bfseries\heiti}
{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage}
% 小節的目錄格式
\titlecontents{subsection}[30pt]{\songti}
{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage}

\titlecontents{subsubsection}[55pt]{\songti}
{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage}


% itletoc 巨集包用於自定義目錄樣式,其中最常用的是下面這條目錄樣式命令。
% \titlecontents 命令來設定不同級別目錄項的格式:
% \titlecontents{章節名稱}[左端距離]{標題字型、與上文間距等}{標題序號}{空}{引導符和頁碼}[與下文間距]
% (1) 其中0pt([左端距離])是目錄項到版芯左邊界的距離;\vspace{2mm}表示與上文留出一定的垂直距離,該距離為2mm;
% \bfseries\heiti 把整條目錄項的字型設為黑體。
% (2) 後面一項是設定目錄項的頭部,並在其後留出一個漢字寬度的距離。緊跟的是設定目錄項主體的格式,
% 這裡因為跟目錄項頭部相同而空置。
% (3) 再後面是設定填充命令和頁碼。這裡用\titlerule*命令畫出填充點,
% 這裡是把垂直居中的實心圓點作為填充符號(習慣上中文不採用居下的填充點), 
% 並以10pt為包含一個填充符號的水平盒子的寬度,即這個寬度越小,填充點越緊密; 填充點後加上頁碼 \contentspage。

% 注意:用 titlesec 巨集包可以在標題中加一些填充物,比如:一條水平線、一排連續或不連續的點等等。用以下三個命令來實現:
% (1) \titleline[<align>]{<horizontalmaterial>}
% 其中中 <align> 表示對齊方式,有三個引數 l、c、r,分別代表左對齊、居中對齊、右對齊;
% <horizontal material> 是要填充的材料,可以是文字、符號等等。
% (2) \titlerule [<height>]:表示在標題中新增一條水平線,<height> 是線的寬度。
% (3) \titlerule ∗[<width >]{<text>}:用於在標題中新增一條填充物,<width> 為填充物的寬度,<text> 為填充的文字或符號。

%----------------------------設定目錄格式-----------------------------------------------

\pagestyle{plain}
\endinput




相關推薦

Latex學習筆記——Latex模板學習總結

前言:         最近參加了數學建模大賽,整個論文都是使用Latex工具排版的,至此感覺到了它的魅力。但是由於論文模板是主辦方提供的,在排版格式定義檔案(.cls檔案)中已經設定好了所有環境,因此用起來還是很簡單的。比賽結束以後,打算學習模板的製作過程,因此研讀了該大

docker學習筆記——Docker常用命令總結

docker學習筆記 docker常用命令總結 1. 開啟/停止/重啟container(start/stop/restart)容器可以通過run新建一個來運行,也可以重新start已經停止的container,但start不能夠再指定容器啟動時運行的指令,因為docker只能有一個前臺進程。容器st

Django 學習筆記模板標籤

關於Django模板標籤官方網址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF標籤 Hello World/views.py 1 from django.shortcuts import render 2 3

flask學習筆記--模板中使用url_for

歡迎加入知了課堂,學習flask之前在檢視函式中使用url_for,實現從檢視函式中跳轉到另一個url。現在我為大家演示如何在模板中使用url_for,實現在頁面點選文字,跳轉至另一個頁面。其實很簡單一、方法1.首先通過檢視函式,渲染出一個頁面@app.route('/')d

數據結構學習筆記 樹的創建和遍歷

一個 後序遍歷 for -1 堆棧 nor ext cnblogs 復制 創建(先序創建和根據先序和中序進行創建)和遍歷(先序遍歷、中序遍歷、後序遍歷、非遞歸堆棧遍歷、層次遍歷):    package tree; public class XianCreateTree

最優化學習筆記牛頓法及擬牛頓法

div size -a article fonts alt water src jsb 最優化學習筆記(五)牛頓法及擬牛頓法

javascript學習筆記:異常捕獲和事件處理

log 類型 按鈕 輸入 button lan yellow logs 代碼 異常捕獲 Try{   發生異常的代碼塊 }catch(err){   異常信息處理 } 1 <!DOCTYPE html> 2 <html> 3 <head

Spring 學習筆記—— Bean之間的關系、作用域、自動裝配

mar byname pps etc 有時 sysman 對象實例 構造 encoding 繼承   Spring提供了配置信息的繼承機制,可以通過為<bean>元素指定parent值重用已有的<bean>元素的配置信息。 <?xml

Go語言學習筆記文件操作

see 大小 unix rdo 筆記 不能 hid code lag 加 Golang學習 QQ群共同學習進步成家立業工作 ^-^ 群號:96933959 文件讀取 os.File 封裝了文件相關操作 type File File代表一個打開的文件對象。

Unity3D之Mecanim動畫系統學習筆記:Animator Controller

浮點 key 發現 菜單 融合 stat mon 好的 project 簡介 Animator Controller在Unity中是作為一種單獨的配置文件存在的文件類型,其後綴為controller,Animator Controller包含了以下幾種功能: 可以對

Python學習筆記OOP

默認 tro acl 引入 支持 不同 post set 成像 模塊 使用模塊import 模塊名。有的僅僅導入了某個模塊的一個類或者函數,使用from 模塊名 import 函數或類名實現。為了避免模塊名沖突。Python引入了按文件夾來組織模塊的方

如鵬網學習筆記MySql基礎

修改列 記錄 tex 令行 金額 升序 查詢 自動遞增 col MySQL基礎 一、數據庫概念  1,網友裝備信息、論壇帖子信息、QQ好友關系信息、學籍管理系統中的學生信息等都要“持久化”的保存到一個地方,    如果通過IO寫到文件中,那麽會非常麻煩,而且不利於多人共享數

jQuery學習筆記

加載 complete += ron 序列 border () ajaxstart 單選 jQuery與Ajax的應用 Ajax的優勢和不足 Ajax的優勢 a)不需要插件支持 b)優秀的用戶體驗 c)提高Web程序的性能 d)減輕服務器和寬帶的負擔 Ajax的不

流暢的python和cookbook學習筆記

pytho col () 學習 util 學習筆記 取出 minute python 1.隨機選擇   python中生成隨機數使用random模塊。   1.從序列中隨機挑選元素,使用random.choice() >>> import random

Oracle 學習筆記

采樣 flash 全表掃描 group space 表空間 manage 授權 個數 --表空間,auto: 自動管理, manual: 手動管理 create tablespace tsp1 datafile ‘D:\ORACLE\ORADATA\O10\tsp1.

Hibernate學習筆記 --- 創建基於中間關聯表的多對多映射關系

mys 兩個 override pac tid 一對多 main ber different 多對多映射是在實際數據庫表關系之間比較常見的一種,仍然以電影為例,一部電影可以有多個演員,一個演員也可以參演多部電影,電影表和演員表之間就是“多對多”的關系 針對多對多的映射關系,

Java8學習筆記--Stream API詳解[轉]

有效 編程效率 實時處理 phaser 綜合 files -- bin 並發模式 為什麽要使用StreamStream 作為 Java 8 的一大亮點,它與 java.io 包裏的 InputStream 和 OutputStream 是完全不同的概念。它也不同於 StAX

python學習筆記數值類型和類型轉換

學習 系統 oat cal 關於 trac hide sed lin Python中的數值類型有:   整型,如2,520   浮點型,如3.14159,1.5e10   布爾類型 True和False e記法:   e記法即對應數學中的科學記數法 1 >>

操作系統學習筆記 頁面置換算法

進入 es2017 問題 簡單 .cn 討論 相同 一位 四種 操作系統將內存按照頁的進行管理,在需要的時候才把進程相應的部分調入內存。當產生缺頁中斷時,需要選擇一個頁面寫入。如果要換出的頁面在內存中被修改過,變成了“臟”頁面,那就需要先寫會到磁盤。頁面置換算法,就是要選出

Nginx 學習筆記nginx-vod-module 模塊

filename star rec 上啟 本地 就是 gdb 裸奔 ted nginx-vod-module 一、編譯 ./configure --user=www --group=www --prefix=/usr/local/openresty --with-debu