- 可以使用 everypage 包为每一页画上边框,使用 geometry 包调整页边距等等.
- 也可以找人定制模板
latexdef -s \author
命令查看 \author
命令的定义\author{name}
命令就是将 name 保存到 \@author
这个宏里面latexdef -s \maketitle
命令可以看到 \maketitle
命令的定义\@maketitle
的宏,追根溯源,我们使用 latexdef -s \@maketitle
来查看其定义\@author
这个宏\author{name}
命令将 name 保存\@author
宏里面,以便 \@maketitle
来调用它,进而传递给我们熟悉的 \maketitle
命令\maketitle
命令之前,以便该命令能够获取到所需的值amsmath
宏包提供,你可以在命令行输入 texdoc amsmath
来阅读其宏包说明手册,以查看该命令的详细用法只需给\foreach
命令加上参数[parse=true]
即可
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%Circle
\draw[blue] (0,0) circle (8);
\def\n{36};%定义圆等分的份数
%Line
\foreach[parse=true] \i in {{360.0/\n},{360.0*2/\n},...,360.0}
\foreach[parse=true] \j in {{360.0/\n},{360.0*2/\n},...,360.0}
\draw[red,thin] (\j:8)--(\i:8);
\end{tikzpicture}
\end{document}
另外,循坏也可以使用l3fp
来做,但不建议
\documentclass{standalone}
\usepackage{expl3,tikz}
\begin{document}
\ExplSyntaxOn
\begin{tikzpicture}
%Circle
\draw[blue] (0,0) circle (8);
\def\n{36};%定义圆等分的份数
%Line
\fp_step_inline:nnnn{360/\n}{360/\n}{360}
{
\fp_step_inline:nnnn{360/\n}{360/\n}{360}
{\draw[red,thin]({##1} \c_colon_str 8)--({#1}\c_colon_str 8);}
}
\end{tikzpicture}
\ExplSyntaxOff
\end{document}
这两个宏包都是texlive自带的,在命令行使用texdoc ifthen
texdoc hlist
即可调出其宏包手册
提供一种使用tikz pagenode的方法.绘制了一个封面
% 从fduthesis.dtx中抽取的
% 排版论文封面作者信息栏的代码
% (分散对齐代码)
\documentclass{ctexart}
% 导言区
\usepackage{expl3}
\usepackage{xparse}
\usepackage{tikz}
\ExplSyntaxOn
% 获取文本长度函数,#1用于保存长度,#2是被检测的文字
\cs_new:Npn \l_get_text_width:Nn #1#2
{
% 将文字内容存入变量
\hbox_set:Nn \l_tmpa_box {#2}
% 用\box_wd:N函数获取盒子宽度,并存入长度变量
\dim_set:Nn #1 { \box_wd:N \l_tmpa_box }
}
% 文本长度函数变体
\cs_generate_variant:Nn \l_get_text_width:Nn { NV }
% 获取clist中各个成员长度是大值,
% #1用于保存长度变量,#2是被检测clist变量
\cs_new:Npn \l_get_max_text_width:NN #1#2
{
\group_begin:
% 将长度设置为小值
\dim_set:Nn #1 {-999pt}
\clist_set_eq:NN \l_tmpa_clist #2
% 循环检测每个tl的长度,并更新是大值
\bool_until_do:nn { \clist_if_empty_p:N \l_tmpa_clist }
{
\clist_pop:NN \l_tmpa_clist \l_tmpa_tl
\l_get_text_width:NV \l_tmpa_dim \l_tmpa_tl
\dim_gset:Nn #1 { \dim_max:nn {#1} { \l_tmpa_dim } }
}
\group_end:
}
% 分散对齐盒子,
% #1是盒子长度变量,#2是需要排版的文字
\cs_new_protected:Npn \l_spread_box:nn #1#2
{
\mode_leave_vertical:
\hbox_to_wd:nn {#1}
{ \tl_map_inline:xn {#2} { ##1 \hfil } \unskip }
}
% 分散对齐盒子函数变体
\cs_generate_variant:Nn \l_spread_box:nn { Vn }
\cs_generate_variant:Nn \l_spread_box:nn { nV }
% 居中对齐盒子,
% #1是盒子长度变量,#2是需要排版的文字
\cs_new_protected:Npn \l_center_box:nn #1#2
{
\mode_leave_vertical:
\dim_set:Nn \l_tmpa_dim {#1}
\dim_add:Nn \l_tmpa_dim {0.6em}
\makebox[0cm][l]{\rule[-0.5ex]{\l_tmpa_dim}{0.4 pt}}
{\hbox_to_wd:nn {\l_tmpa_dim} { \hfil #2 \hfil }}
}
% 居中对齐盒子函数变体
\cs_generate_variant:Nn \l_center_box:nn { Vn }
% 为文字添加下划线
\cs_new:Npn \l_text_uline:n #1
{
\l_get_text_width:Nn \l_tmpa_dim {#1}
\dim_add:Nn \l_tmpa_dim {0.6em}
% 将标尺盒子放到宽度为0的左右盒子中实现下划线
\makebox[0pc][l]{\rule[-0.5ex]{\l_tmpa_dim}{0.4 pt}}
% 用高度为0的标尺盒子在文字两端添加空白
\rule{.3em}{0cm}#1\rule{.3em}{0cm}
}
% 定义需要的tl变量
\clist_map_inline:nn
{
major, researchfield, author, supervisor, date
}
{ \tl_new:c { l_info_ #1 _tl } }
% 设置tl变量值的辅助函数
\cs_new_protected:Npn \__set_info_var:nn #1#2
{ \tl_set:cn { l_info_ #1 _tl } {#2} }
% 循环设置tl变量值
\clist_map_inline:nn
{
{ major } { },
{ researchfield } { 教育学 },
{ author } { },
{ supervisor } { },
{ date } { },
}
{ \__set_info_var:nn #1 }
% 定义tl常量的辅助函数
\cs_new_protected:Npn \__define_name:nn #1#2
{ \tl_const:cn { c_name_ #1 _tl } {#2} }
% 循环定义需要的tl常量
\clist_map_inline:nn
{
{ major } { 专业教学部 },
{ researchfield } { 专业名称 },
{ author } { 指导教师 },
{ supervisor } { 研究生 },
{ date } { 提交时间 },
}
{ \__define_name:nn #1 }
% 排版封面中的作者等信息
\cs_new_protected:Npn \l_cover_info:
{
\begin{minipage} [ c ] { \textwidth }
\centering
% 构造各信息标识名称clist
\clist_set:Nx \l_tmpa_clist
{
\c_name_major_tl,
\c_name_researchfield_tl,
\c_name_author_tl,
\c_name_supervisor_tl,
\c_name_date_tl,
}
% 构造各信息标识值clist
\clist_set:Nx \l_tmpb_clist
{
{ \l_info_major_tl },
{ \l_info_researchfield_tl },
{ \l_info_author_tl },
{ \l_info_supervisor_tl },
{ \l_info_date_tl }
}
% 计算最大长度
\l_get_max_text_width:NN \l_tmpb_dim \l_tmpb_clist
% 循环输出各字段
\bool_until_do:nn { \clist_if_empty_p:N \l_tmpa_clist }
{
\clist_pop:NN \l_tmpa_clist \l_tmpa_tl
\clist_pop:NN \l_tmpb_clist \l_tmpb_tl
\heiti
% 定宽分散对齐
\l_spread_box:nn {7em} { \l_tmpa_tl }
:
\songti
% 定宽居中对齐
\l_center_box:Vn \l_tmpb_dim { \l_tmpb_tl }
\par
}
\end{minipage}
}
% 定义用户接口
\NewDocumentCommand \txtuline { m }
{
\l_text_uline:n {#1}
}
\NewDocumentCommand \makecover { }
{
\begin{titlepage}
\begin{tikzpicture}[remember~picture,overlay]
\node[scale=2,font=\Huge\bfseries] (title) at ([shift={(0,-0.3\paperheight)}]current~page.north){沈阳师范大学};
\node[scale=2,font=\LARGE] (subtitle) at ([shift={(0,-0.1\paperheight)}]title){硕士学位论文};
\node[align=center,scale=1.5] (info) at ([shift={(-0.08\paperwidth,-0.05\paperheight)}]current~page.center)
{
\l_cover_info:
};
\node[scale=1.5,font=\bfseries] at ([shift={(3,-3)}]current~page.north~west){编号:};
\node[scale=1.5,font=\bfseries] at ([shift={(-5,-3)}]current~page.north~east)
{
\begin{tabular}{|c|c|c|}
\hline
类 & 全日制教育硕士 & \\ \cline{2-3}
别 & 非全日制教育硕士 & \\ \hline
\end{tabular}
};
\end{tikzpicture}
\end{titlepage}
}
\ExplSyntaxOff
% 正文区(有且只能有一个)
\begin{document}
\makecover
\end{document}
效果如图:
\newcommand{\foo}[1]{this is #1.\newcommand{\fooo}[1]{that is ##1.}}
在使用\foo
的同时创建一个\fooo
命令,由于是内层参数,使用##1.
以此类推
\if@twocolumn <true >else<false >\fi
这是一个判断语句,依名称应该是判断是否为双栏,如果条件满足,执行true
, 否则 false
.如此即可:
\node [blackvertex,scale=0.4] (b1) at (126:{2*cos(36)}) {};
用了,成功了,感谢您。
如下图,使用tcolorbox实现,也可以使用TiKZ中的node来实现,也很容易!1.tex
编译2.tex
问 如何实现上面是标题,下面是整页边框的效果?