因为离散要求写一篇算法的小文章,实在无法忍受word的数学公式输入之后,我自(ctrl
)学(c
)了一下LaTeX的写法,这里简单介绍我写文章时用到的代码,时隔多日,若有偏差欢迎指出
百度上输出中文的方法各种各样,在尝试n多种方法无果后(CJK什么的),使用了XeLaTeX,只需使用如下文档类型,中括号内为可选参数,UTF8表示使用utf8编码,花括号内为文档类型,ctexart表示其文档类型为中文article
\documentclass[UTF8]{ctexart}
形如\begin{环境名}...\end{环境名}
称为环境,而\begin{document}...\end{document}
则是正文区,里面的内容就是文章的内容,而这之前的部分则是用来导入各种宏包
下面代码较为易懂,\maketitle
也即打印标题
\title{Notes On LaTeX Typesetting}
\author{Some One}
\date{November 13, 2011}
\maketitle
当然还可以写摘要
\begin{abstract}
some abstract...
\end{abstract}
代码如下,其中\chapter
在article中不能使用
\part{部分标题}
\chapter{章标题}这一章我们介绍这些内容。
\section{节标题}这一节我们介绍这些内容。
\subsection{小节标题}这一小节我们介绍这些内容。
\subsubsection{子节标题}这一子节我们介绍这些内容。
\paragraph{段标题}这一段我们介绍这些内容。
\subparagraph{小段标题}这一小段我们介绍这些内容。
使用\tableofcontents
可以生成目录,而输入形如
\renewcommand\thesection{§\arabic{section}}
则可以自定义某一类章节标题的格式,在此不作示范
这里列举三种列表,分别为无序列表,有序列表,描述列表
\begin{itemize} %无序列表
\item 无编号的列表
\item 带编号的列表
\item 带标签的列表
\end{itemize}
\begin{enumerate} %有序列表
\item 无编号的列表
\item 带编号的列表
\item 带标签的列表
\end{enumerate}
\begin{description} %描述列表
\item[无序列表] 无编号的列表。%中括号内为描述内容(相当于一种“序号”)
\item[有序列表] 带编号的列表。
\item[描述列表] 带标签的列表。
\end{description}
插入已有图片需要导入宏包graphicx,即\usepackage{graphicx}
,使用如下
\includegraphics[选项]{图形文件} %与文字并行的图片
%将图片单独居中插入
\begin{center}
\includegraphics[选项]{图形文件}
\end{center}
%插入浮动图片
\begin{figure}[htbp!]
\centering
\includegraphics[选项]{图形文件}
\caption{图片} %可以在图片下方加标注并自动编号
\end{figure}
此处即makedown写法即可,$a=1$
为行内公式,$$a=1$$
为块级公式,具体写法参考常用数学符号的 LaTeX 表示方法
这里需要导入宏包
\usepackage{caption}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
插入时则
\begin{algorithm}
\caption{算法名字}
\begin{algorithmic}
\Require 输入
\Ensure 输出
\end{algorithmic}
\State ...
\For{...}
\State ...
\EndFor
\If
...
\EndIf
\While
...
\EndWhile
\end{algorithm}
其中还可以对格式进行定制
\floatname{algorithm}{算法}
\renewcommand{\algorithmicrequire}{\textbf{输入:}}
\renewcommand{\algorithmicensure}{\textbf{输出:}}
这里需要导入宏包
\usepackage{listings}
还可以对代码进行定制
\usepackage{xcolor}
\lstset{
frame=none, % 不显示背景边框
backgroundcolor=\color[RGB]{245,245,244}, % 设定背景颜色
keywordstyle=\color[RGB]{116,0,0}, % 设定关键字颜色
commentstyle=\it\color[RGB]{0,96,96}, % 设置代码注释的格式
stringstyle=\rmfamily\slshape\color[RGB]{255,153,18}, % 设置字符串格式
showstringspaces=false, % 不显示字符串中的空格
language=c++, % 设置语言
}
插入代码时使用lstlisting环境即可
\begin{lstlisting}
#include
using namespace std;
int main() {
cout << "hello" << endl;
return 0;
}
\end{lstlisting}
\begin{thebibliography}{123456}
\bibitem[Knuth1]{DK1} D. Knuth, T.A.O.C.P. , Vol. 1, Addison-Wesley, 1997.
\bibitem[Knuth2]{DK2} D. Knuth, T.A.O.C.P. , Vol. 2, Addison-Wesley, 1997.
\bibitem[Knuth3]{DK3} D. Knuth, T.A.O.C.P. , Vol. 3, Addison-Wesley, 1998.
\end{thebibliography}
中括号内为文献记号,花括号内为引用名称,至于那个123456表示我也看不懂。
\textrm{Roman Family}
\textsf{Sans Serif Family}
\texttt{Typewriter Family}
花括号内为字体内容
本文内容及示例参考LaTeX 排版学习笔记以及 LaTeX实战经验:如何插入程序代码,写文章时也参考诸多博客,感谢这些博客