一.代码高亮
解决方案一:minted宏包
\documentclass[a4paper]{ctexart}
\usepackage{minted}
\begin{document}
示例1
\begin{minted}{c++}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
示例2
\begin{minted}[mathescape,
linenos,
numbersep=5pt,
gobble=2,
frame=lines,
framesep=2mm]{csharp}
string title = "This is a Unicode π in the sky"
/*
Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
of an $n$-sided regular polygon circumscribing a
circle of diameter $d$.
*/
const double pi = 3.1415926535
\end{minted}
\end{document}
解决方案二:listings宏包
\documentclass[a4paper]{ctexart}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{fontspec}
\newfontfamily\monaco{Monaco}
\setmonofont[Mapping={}]{Monaco} %英文引号之类的正常显示,相当于设置英文字体\setsansfont{Monaco} %设置英文字体 Monaco, Consolas, Fantasque Sans Mono
\setmainfont{Monaco} %设置英文字体
\setCJKmainfont{方正兰亭黑简体} %中文字体设置
%\setCJKsansfont{华康少女字体} %设置中文字体
%\setCJKmonofont{华康少女字体} %设置中文字体
% 全局设置
\lstset{columns=flexible,numbers=left,numberstyle=\tiny\monaco,basicstyle=\small\monaco,keywordstyle= \color{ blue!70},commentstyle=\color{red!50!green!50!blue!50}, frame=shadowbox, rulesepcolor= \color{ red!20!green!20!blue!20} }
\begin{document}
% 默认
\begin{ lstlisting}[ language=C]
int main(int argc, char ** argv)
{
printf("Hello world! \n");
return 0;
}
\end{ lstlisting}
% 添加边框
\begin{lstlisting}[language={[ANSI]C},
keywordstyle=\color{blue!70},
commentstyle=\color{red!50!green!50!blue!50},
frame=shadowbox,
numbers=left,
rulesepcolor=\color{red!20!green!20!blue!20}]
{
printf("Hello world! \n");
return 0;
}
\end{lstlisting}
\end{ document}
自定义配置
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{ %
backgroundcolor=\color{white}, % choose the background color
basicstyle=\footnotesize\ttfamily, % size of fonts used for the code
columns=fullflexible,
breaklines=true, % automatic line breaking only at whitespace
captionpos=b, % sets the caption-position to bottom
tabsize=4,
commentstyle=\color{mygreen}, % comment style
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
keywordstyle=\color{blue}, % keyword style
stringstyle=\color{mymauve}\ttfamily, % string literal style
frame=single,
rulesepcolor=\color{red!20!green!20!blue!20},
% identifierstyle=\color{red},
language=c++,
}
\lstset{ %
backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
basicstyle=\ttfamily, % the size of the fonts that are used for the code
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\ttfamily\color{mygreen},
% comment style
deletekeywords={}, % if you want to delete keywords from the given language
escapeinside={}, % if you want to add LaTeX within your code
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
frame=single, % adds a frame around the code
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
keywordstyle=\color{blue}, % keyword style
language=C++, % the language of the code
morekeywords={}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{mymauve}, % string literal style
tabsize=2, % sets default tabsize to 2 spaces
title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title
}
二.伪代码
样式一
\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\begin{document}
\begin{algorithm}
\caption{Calculate $y = x^n$} %单独一栏标题
\label{alg1} %标签显示为:Algorithm 1
\begin{algorithmic} %开始algorithmic环境
\REQUIRE $n \geq 0 \vee x \neq 0$ %\REQUIRE显示Require:
\ENSURE $y = x^n$ %\ENSURE显示Ensure:
\STATE $y \gets 1$ %\gets和\leftarrow一样都是左箭头,建议用\gets
\IF{$n < 0$} %\IF{$xxx$}显示if xxx then
\STATE $X \gets 1 / x$ %每一行都要\STATE $xxx$
\STATE $N \gets -n$
\ELSE %\ELSE显示else
\STATE $X \gets x$
\STATE $N \gets n$
\ENDIF %\ENDIF显示end if
\WHILE{$N \neq 0$} %\WHILE{$xxx$}显示while xxx do
\IF{$N$ is even}
\STATE $X \gets X \times X$
\STATE $N \gets N / 2$
\ELSE[$N$ is odd] %ELSE[$xxx$]显示else {xxx}
\STATE $y \gets y \times X$
\STATE $N \gets N - 1$
\ENDIF
\ENDWHILE %%\ENDWHILE显示end while
\end{algorithmic}
\end{algorithm}
\end{document}
知乎-在 LaTeX 中排版算法(伪代码),如何正确缩进?
样式二
\documentclass{article}
\usepackage{xeCJK}
\usepackage[ruled]{algorithm2e}
\renewcommand{\algorithmcfname}{算法}
\begin{document}
\begin{algorithm}[H]
% \SetAlgoNoLine可以去掉竖线
\caption{How to write algorithms}
\KwIn{this text}
\KwOut{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\end{algorithm}
\end{document}
样式三
\documentclass{article}
\usepackage{xeCJK}
\usepackage[linesnumbered,boxed]{algorithm2e}
\begin{document}
\begin{algorithm}
\caption{identifyRowContext}
\KwIn{$r_i$ , $Backgrd(T_i)$=${T_1,T_2,\ldots,T_n}$ and similarity threshold $\theta_r$}
\KwOut{$con(r_i)$}
$con(r_i)= \Phi$\;
\For{$j=1;j \le n;j \ne i$}
{
float $maxSim=0$\;
$r^{maxSim}=null$\;
\While{not end of $T_j$}
{
compute Jaro($r_i,r_m$)($r_m \in T_j$)\;
\If{$(Jaro(r_i,r_m) \ge \theta _r) \wedge ((Jaro(r_i,r_m) \ge r^{maxSim}) $}
{
replace $r^maxSim$ with $r_m$\;
}
}
$con(r_i)=con(r_i) \cup {r^{maxSim}}$\;
}
return $con(r_i)$\;
\end{algorithm}
\end{document}