enumitem宏包
- 参数
- vertical spacing: topsep, partopsep, parsep, itemsep
-
horizontal spacing: leftmargin, rightmargin, listparindent, labelwidth, labelsep, itemindent
-
key label, ref, font, format, align=left/right/parleft, setlabelalign
-
自定义列表环境, 用于例题: 前提是enumitem宏包, 实现列表头与主体(关键是\before)都是楷体.
\newlist{litilist}{enumerate}{2} \setlist[litilist,1]{label=例\thelitilisti., before=\kaishu, font=\kaishu }
- 还是自定义列表
\newcount{toplist} \setcount{toplist}{1} \newcommand{\mylistname}{enumerate} \setlist[\mylistname,\value{toplist}+1]{labelsep=\itemindent+2em]
上述例子是enumitem的manual给的, 有几个错误, 修改如下:
\newcounter{toplist} \setcounter{toplist}{1} \newlist{mylistname}{enumerate}{2} \setlist[mylistname,\value{toplist}]{label=\themylistnamei., resume}
tips
- 数学函数名用正体显示, 斜体表示变量. 临时用一下函数名(通常是只用有限的几次), 可以直接写成: \operatorname{rank}(x) 就可以了.
宏包简要说明
- epigraph: 章节头名言
- times和txfonts宏包已过时, 很多bug, 尽量用 mathptmx 或 newtxtext, newtxmath 宏包.
- parskip: 段首缩进宏包. \paragraph是\subsection的下一层.
我的宏包设置(2016.12)
- 列表环境: * 不用enumerate宏包: 该宏包只是给 enumerate 环境增加了一可选项,用来设定列表项的数字的形式。 * 用enumitem. * iitem宏包: 实现多级列表. 宏包很小.
\begin{enumerate} \item 1 \iitem (1) \item 2 \iitem (1) \iitem (2) \iiitem i \item 3 \end{enumerate}
- 不要indent
-
例题/定理/定义全部按照section计数
-
如何安装宏
如果得到的宏包是已经编译过的,也就是已经有 .sty 或者 .cls 文件,只需把这些文件放在 localtexmf\tex\latex\ 下的某个子目录中, 可以自己建一个。然后还要让TEX知道这个新的 宏包的存在, 需要刷新TEX系统的文件名数据库。现在你可以使用这个宏包了。 也可以把这些宏包文件和要编辑的TEX源文件放在同一目录下, 这种情况下不需要刷新TEX 系统的文件名数据库, 但只有同一个目录下的文件可以使用这些宏包。 如果得到的是宏包的源文件,一般来说都包含两个文件: 一个扩展名为 .ins ,另一个扩展 名为 .dtx 。 此外,通常会有一个 readme.txt 对宏包进行简要的说明。 现在需要两个步骤将它 安装到TEX系统中:
(1). 生成样式文件并装入系统: <1>. 对 .ins 运行LaTeX命令。 这将会产生一个或若干个 .sty 文件 <2>. 把 .sty 文件移到系统能找到的地方。 通常是 …/localtexmf/tex/latex 子目录下(Windows 或者 OS/2 用户应该改变斜线为反斜线) <3>. 刷新系统的文件名数据库。参照上一节的说明 (2). 生成说明文档 <1>. 对 .dtx 文件运行LaTeX命令。 这将会产生一个 .dvi 文件。 注意:可能需要多次运行LaTeX来正确处理交叉引用 <2>. 检查一下LaTeX是否产生了 .dvi 文件。 如果没有发现这个文件,就可以执行第 5 步了。 <3>. 为了生成索引,键入命令:makeindex -s gind.ins name (这里 name 表示不带扩展名的主文件名) <4>. 再次对 .dtx 文件运行 LA T E X 命令。 <5>. 最后一步不是必需的,生成 .ps 文件或者 .pdf 文件以方便阅读。
有时会发现生成了一个 .glo(glossary) 文件。 在第 4 步和第 5 步之间运行下面的命令
makeindex -s gglo.ist -o name.gls name.glo
确认在执行第 5 步前最后对 .dtx 文件运行一遍LaTeX 命令。
- 建立自己的宏包
如果建立了很多自己的环境和命令,文档导言部分将变得很长, 在这种情况下,建立一个新的 LaTeX包来存放所有自定义的命令和环境是一个好的处理方式。可以在文档中使用 \usepackage 命令来引入中定义宏包中的环境和命令。 写一个宏包的基本工作就是将文档导言复制到一个分离的文件中去, 这个文件要以 .sty 结 尾。还需要一个命令:\ProvidesPackage{package_name}
这个命令应该在包定义源文件的最前面使用。它用于告诉 LaTeX宏包的名称从而允许LaTeX 在你尝试两次引入同一个宏包的时候给出一个良好的错误信息。
一些宏包
-
wrapfig宏包可以实现左右排版: 但是不能与列表环境互相嵌入.
\begin{wrapfigure}[12]{r}[34pt]{5cm} \begin{tikzpicture} .... \end{tikzpicture} \end{wrapfigure}
-
floatrow宏包, 使用实例参见ab_preamble.tex
-
做个glossary(名词/术语索引)还是很有作用的. 使用实例参见ab_preamble.tex.
-
ab_preamble.tex中的插图(一行多图)可以参考.
other to 整理
- 无序列表环境: 其中的51指的是\ding{51}这个符号
\begin{dinglist}{51} \item 内容 \item 内容 \end{dinglist}
-
跨页表格/代码框 还不错的book类
-
关于页码的显示: 第3页/共10页(3/10), \pageref{LastPage}
\fancyfoot[LE,RO]{\textbf{\thepage/\pageref{LastPage}}}
- 蓝色分割线, 中间写上点内容. 使用: \fengexian{内容}
\newcommand{\fengexian}[1]{ \pagebreak[3] \begin{center} \textcolor{blue}{\hrulefill\hspace{3em}\textsc{#1}\hspace{3em}\hrulefill} \end{center}}
- 两栏: 左代码右输出
\usepackage{verbatim,xcolor} \newbox\savedlines \newtoks\savedtokens \makeatletter \def\codeshow{% \global\savedtokens={}% \def\verbatim@processline{% {\setbox0=\hbox{\the\verbatim@line}% \hsize=\wd0 \the\verbatim@line\par}% \global\savedtokens=\expandafter{\the\expandafter\savedtokens\the\verbatim@line^^J}}% \@tempswatrue \setbox0=\vbox\bgroup\parskip=0pt\topsep=0pt\partopsep=0pt \verbatim} \def\endcodeshow{\endverbatim% \unskip\setbox0=\lastbox\egroup \global\setbox\savedlines=\box0 \addvspace{1em}\par\noindent% \colorbox{lightgray}{% \begin{minipage}{.55\textwidth}{\usebox\savedlines}\end{minipage}}% \hfill\fbox{\parbox{.40\textwidth}% {\scantokens\expandafter{\the\savedtokens\unskip\endinput}}}% \par\addvspace{1em}} \makeatother
使用方法:
\begin{codeshow} \begin{tikzpicture} \draw[blue](0,0)circle(1cm); \end{tikzpicture} \end{codeshow}
ps: 目前代码部分是灰色(lightgray)的背景, 输出部分是黑色的方框围绕.
- 左边显示代码,右边显示编译结果的代码展示环境: 需要listing, tcolorbox宏包
\lstdefinestyle{codeshow} { basicstyle=\small\ttfamily, % \ttfamily等宽字体 aboveskip=0pt,% 上边距 belowskip=0pt,% 下边距 lineskip=0pt, tabsize=4,% 设置tab空格数 showtabs=false,% tab showspaces=false,% 空格标识 showstringspaces=false, boxpos=c, xleftmargin=5pt,% 左边距 xrightmargin=0pt, breaklines=true,% 自动换行 breakindent=0pt,% 换行后缩进为0 } \newtcblisting{mycodeshow}{ colback=red!5!white, colframe=red!75!black, breakable, boxrule=0.5pt,% 去除文本框线 arc=0mm,% 内弧 outer arc=0mm,% 外弧 left=0pt, right=0pt, top=0pt, bottom=0pt, listing outside text, listing options={ style=codeshow, } }
使用方法:
\begin{mycodeshow} \begin{tikzpicture} \draw[blue](0,0)circle(1cm); \end{tikzpicture} \end{mycodeshow}
-
与tcolorbox相似功能的宏包mdframe.
-
\documentclass[fleqn]{book}: left-justified equations
-
带圈数字的实现方法 ps: 用calc宏包, +171似乎更好, 如下:
% 带圈数字,不能超过10个 \def\@circlenum#1{ \ding{\the\numexpr\value{#1}+171\relax}% }
- 源代码与 pdf 文件之间的反向搜索问题
让编辑器都自动实现,需要配置好相关参数,这个参数即:-synctex=1或 synctex=1
- winedt怎么默认以utf8打开编辑文档?
(1)% !Mode:: “TeX:UTF-8” 每个文档头都需要添加这一行代码 (2)在options - configuration wizard - wrapping 下 UFT-8 format中加上Tex,改成 Tex;UTF-8|ACP;EDT;INI 就可以了。这样所有的tex文档都被默认是utf-8文档打开。 但是winedt还没有办法很好支持两种以上的utf-8文档,比如同时输入中文和韩语。 ps: 目前我的winedt中没有进行(2)中的动作.
latex宏包更新冲突
-
caption2宏包已经obsoleted了,现在是caption宏包.
参见: 1, 2, 3.
ps: main46的package.tex中已经修改. -
enumitem宏包是什么? 列表宏包, 有resume选项. 貌似可以把enum宏包给替换了.
-
itemize的各种缩进: 3楼有解释 一个例子:
\begin{itemize}\setlength{\labelsep}{0.5em} \item a \item b \item[\smiley]第三个变换相较于前两个,有点无力. \end{itemize}
-
hypernat宏包现在不需要了: 因为natbib 和 hyperref 现在配合得很好
-
ddd * biber 代替 bibtex * polyglossia 代替 babel * xindy 代替 makeindex * 画图用 TikZ + Asymptote 分工,代替 MetaPost、PSTricks 和 xfig等等其他所有绘图包。 以上来自邓博元