糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Latex之复杂距离 自定义章节样式 自定义目录样式

Latex之复杂距离 自定义章节样式 自定义目录样式

时间:2019-09-04 20:01:30

相关推荐

Latex之复杂距离 自定义章节样式 自定义目录样式

**

1. 复杂距离

**

a.水平和竖直距离

b.填充距离与弹性距离

c.行距

d.制表符

e.悬挂缩进

f.整段缩进

2. 自定义章节样式

3.自定义目录样式

% 导言区\documentclass[a4paper]{ctexart}\usepackage{ctex}\usepackage{xeCJK} %导入这个宏包,就可以支持中文\usepackage{amsmath}\usepackage{changepage} %提供了一个adjustwidth环境\usepackage{titlesec} %自定义章节样式\usepackage{titletoc} %自定义目录样式%5.3复杂距离 %5.3.1水平和竖直距离%水平距离的命令有两种:一种禁止在此处断行,如图5.1所示;另一种允许换行, 如表5.2所示。\begin{document}%表5.1禁止换行的水平距离你好$\thinspace$你好,你好\,你好 \\ %\thinspace或\,长度为0.1667em你好$\negthinspace$你好,你好$\!$你好\\ %\negthinspace或\!,长度为-0.1667em你好$\enspace$你好 \\ %\enspace,长度为0.5em你好$\nobreakspace$你好,你好~你好 \\ %\nobreakspace,长度为空格%表5.2允许换行的水平距离你好$\quad$你好 \\ %\quad,长度为1em你好$\qquad$你好 \\ %\qquad,长度为2em你好$\enskip$你好 \\ %\enskip,长度为0.5em你好\ 你好 \\ % \ (空格),长度为空格%使用\hspace{length}命令自定义空格长度,其中length的取值如-1em、2ex、5pt plus 3pt minus 1pt,以及0.5\linewidth等。%如果想要这个命令在断行处也正常输出空格,使用带星号命令\hspace*。%类似地,使用\vspace{length}和\vspace*{length},作为竖直方向上空白距离的输出。%要定义新的长度宏,使用\newlength命令;%要重设现有长度宏的值,可以使用\setlength命令;%要调整长度宏的值,则使用\addtolength命令。\newlength{\mylatexlength}\setlength{\mylatexlength}{10pt}\addtolength{\mylatexlength}{-5pt}%此外,LATEX还定义了三个竖直长度\smallskip 、\medskip和\bigskip\parbox[t]{3em}{Tex\par Tex}\parbox[t]{3em}{Tex\par\smallskip Tex}\parbox[t]{3em}{Tex\par\medskip Tex}\parbox[t]{3em}{Tex\par\bigskip Tex}%5.3.2填充距离与弹性距离%命令\fill用于填充距离,要作为\hspace或\vspace的参数。%另外还有单独使用的命令\hfill与\vfill,它们的作用相同。%弹性距离指按一定比例计算得到的多个空白,命令是\stretch.左\hspace{\fill}右\\左\hspace{\stretch{1}}中\hspace{\stretch{2}}右\\%你还可以使用类似\hfill的\hrulefill和\dotfill命令.L\hfill R\\L\hrulefill Mid\dotfill R%5.3.3行距%LATEX的行距由基线计算,可以使用命令\linespread{num}默认的基线距离\baselineskip是1.2倍的文字高,所以默认行距是1.2倍。%如果更改linespread为1.3,那么行距变为1.2*1.3=1.56倍————这也是ctex文档类的做法。%此外还有\lineskiplimit和\lineskip命令。%有时候在两行之间,可能包含较高的内容(比如分式1/2),这使得前一行底部与后一行顶部的距离小于limit值,%则此时行距会由\linespread控制改为由\lineskip控制。%本书采用如下设置:\setlength{\lineskiplimit}{3pt}\setlength{\lineskip}{3pt}%5.3.4制表位%制表位使用tabbing环境,需要注意,这是一个极其容易造成坏箱的环境。这里有几个要点:% \=:在此处插入制表位。% \>:跳入下一个制表位。% \\:制表环境内必须手动换行和缩进。% \kill:若行末用\kill代替\\,那么该行并不会输出到文档中。% 一个丑陋的例子如下:\begin{tabbing}\hspace{4em}\=\hspace{8em}\=\kill制表位\>就是这样\>使用的\\随时\>可以添加\>新的:\=就这样\\也可以\=随时重设\=制表位\\这是\>新的\>一行\end{tabbing}%5.3.5悬挂缩进%这种缩进在实际排版中并不常用,而在需要列表的场合中才使用,但可以借助列表宏包enumitem进行定义。%这里介绍的是正文中悬挂缩进的使用。%如果需要对单独一段进行悬挂缩进,如下所示:%\hangafter 2%\hangindent 6em%这两行代码放在某一段的上方,其作用是控制紧随其后的段落从第二行开始悬挂缩进,并且设置悬挂缩进的长度是6em.%如果连续的多段需要悬挂缩进,可以通过改造编号列表环境或者verse环境来实现。(verse环境:事实上这是一个排版诗歌的环境)%或者如下这样尝试:正文...{\leftskip=3em\parindent=-1em\indent这是第一段。注意整体需要放在第一组花括号内,且花括号前应当有空白行。第一段前需要加indent命令,最后一段的末尾需额外空一行,否则可能出现异常。这是第二段。\ldots这是最后一段。别忘了空行。}%5.3.6整段缩进%宏包changepage提供了一个adjustwidth环境,它能够控制段落两侧到文本区(而不是页边)的距离。\begin{adjustwidth}{1cm}{3cm}%本段首行缩进需要额外手工输入。本环境距文本左侧1cm,距右侧3cm.\end{adjustwidth}%也可以尝试赋值\leftskip等命令,这对奇偶页的处理更有效。%5.4自定义章节样式%本节主要涉及titlesec宏包的使用。章节样式调整使用\titlelabel、\titleformat*命令。%前者需要配合计数器使用,后者可简单地设置章节标题的字体样式。\titlelabel{\thetitle.\quad}\titleformat*{\section}{\itshape}%章节样式由标签和标题文字两部分构成。%标签一般表明了大纲级别以及编号,比如“第一章”“Section3.1”等。%标题文字比如“自定义章节样式”这几个字。%在report与book类的subsection及以下级别,article类的paragraph及以下级别是默认没有编号的,%因此其对应的级别也没有标签,除非人工进行设置。%对于需要详细处理标签、标题文字两部分的情况,titlesec宏包还提供了一个\titleformat命令。%调用方式如下:%\titleformat{command}[shape]{format}{label}{sep}{before-code}[after-code]%上面参数对应的含义如下所示。%command:大纲级别命令,如\chapter等。%shape:章节的预定义样式,分为9种。%hang.默认值,标题在右侧,紧跟在标签后。%block.标题和标签封装排版,不允许额外的格式控制。%display.标题另起一段,位于标签的下方。%runin.标题与标签同行,且正文从标题右侧开始。%leftmargin.标题与标签分段,位于左页边。%rightmargin.类似leftmargin,位于右页边。%drop.文字包围标题。%wrap.类似drop,文本会自动调整以适应最长的一行。%frame.类似display,但有框线。%format:用于设置标签和标题文字的字体样式,这里可以包含竖直空距,即标题文字到正文的距离。%label:用于设置标签的样式,比如“第\chinese\thechapter章”大概是ctexbook类的默认样式。%sep:标签和标题文字的水平间距,必须是LATEX的长度表达。当shape取display时,表示竖直空距;取frame时,表示标题到文本框的距离。%before:标题前的内容。%after:标题后的内容。对于hang,block,display,此内容取竖向;对于runin、leftmargin,此内容取横向;否则此内容被忽略。%宏包还给出了\titlespacing与\titlespacing*两个命令,其使用方式如下:%\titlespacing*{command}{left}{before-sep}{after-sep}[right-sep]%\titlespacing{command}{left}{*m}{*n}[right-sep]%各参数的含义如下所示:%command:大纲级别命令,如\chapter.%label:缩进值。在left/right margin下表示标题宽;在wrap中表示最大宽;在runin中表示标题前缩进的空距。%before-sep:标题前的垂直空距。%after-sep:标题与正文间的空距。在hang、block、display中是垂直空距;在runin、wrap、drop、left\right margin中是水平空距。%right-sep:可选,仅对hang、block、display适用。%*m/*n:在titlespacing命令中的m、n分别表示before与after-sep的变动范围倍数,基数是默认值。%宏包中还有一个\titleclass命令,用来定义新的章节命令(\subchapter)或者重申明已有的章节命令。%使\part命令不单独占据一页\titleclass{\part}{top}%新定义一个\subchapter命令\titleclass{\subchapter}{straight}[\chapter]\newcounter{subchapter}\renewcommand{\thesubchapter}{\Alph{subchapter}}%其中,第二参数表示章节类型,可以是page(独占一页)、top(另开新页),或者straight(普通)。%宏包还给出了\titlelinne命令,用来绘制填充同时嵌入其他对象的行。%对象可以嵌入到左、中、右三个位置。如果你只是想填充一行而不嵌入对象,使用\titlerule及其带星号的命令形式。%嵌入对象的线%\titleline[c]{CHAPTER 1}%单纯填充一行%\titlerule[height]%\titlerule*[width]{text} %最后,我们给出一个复杂的样式定义示例。这个例子稍微有些复杂,只用到了\titleformat相关章节的命令。它用\startcontents与\printcontents命令,在每章开始都插入该章的子目录。%限于本书篇幅,请读者自行编译。\newcommand{\chaformat}[1]{%\parbox[b]{.5\textwidth}{\hfill\bfseries #1}%\quad\rule[-12pt]{2pt}{70pt}\quad{\fontsize{60}{60}\selectfont\thechapter}}%chapter样式定义中的\chaformat以章名作为隐式参数\titleformat{\chapter}[block]{\hfill\LARGE\sffamily}{}{0pt}{\chaformat}[vspace{2.5pc}\normalsize\startcontents\printcontents{}{1}{\setcounter{tocdepth}{2}}]\titleformat*{\section}{\centering\Large\bfseries}\titleformat{\subsubsection}[hang]{\bfseries\large}{\rule{1.5ex}{1.5ex}}{0.5em}{}%本例没有定义subsection样式。如果你想给subsection级别标号(即赋予它标签),使用\setcounter{secnumdepth}{3}.(report/book类part级别深度为0,递增;article类part级别深度为-1,无chapter级别。故它们的section及以下级别深度一致。)%临时更改\secnumdepth可以生成不编号的章节,但章节名仍会被用在目录和\markboth中,有时这比带星号的章节命令更巧妙一些。%5.5自定义目录样式%本节主要涉及titletoc宏包,它与titlesec宏包的文档写在同一个pdf文件中。%首先是目录的标题,其可以通过recommand更改,分别是\contentsname、\listfigurename和\listtablename。%再来看命令\dottecontents和\titlecontents:%\dottecontents{section}[left]{above-code}{label-width}{leader-width}%\titlecontents{section}[left]{above-code}{numbered-entry-format}{numberless-entry-format}{filler-page-format}[below-code]%各参数的含义如下所示:%section:目录对象,可以填chapter、section,或者figure、table。%left:目录对象左侧到左页边区的距离,一般必选。%above-code:格式调整命令,可以包含垂直对象,也可以用\contentslabel,即指定本级别目录标签箱子的宽度。%label-width:标签宽。%leader-width:填充符号宽,默认的填充符号是圆点。%numbered-entry-format:如果有标签,表示在目录文本前输入的格式。%numberless-entry-format:没有标签时输入的格式。%filler-page-format:填充格式,一般借助titlesec中的\titlerule*[width]{text}命令。%below-code:在entry之后输入的格式,比如垂直空距。%下例中,section级别使用了填充命令\titlerule*。请读者自行编译效果。\titlecontents{chapter}[1.5em]{}{\contentslabel{1.5em}}{\hspace*{-2em}}{\hfill\contentspage}\titlecontents{section}[3.3em]{}{\contentslabel{1.8em}}{\hspace*{-2.3em}}{\titlerule*[8pt]{$\cdot$}\contentspage}\titlecontents*{subsection}[2.5em]{\small}{\thecontentslabel{}}{}{,\thecontentspage}[;\qquad][.]\end{document}

如果觉得《Latex之复杂距离 自定义章节样式 自定义目录样式》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。