一文搞懂Overleaf(Latex)中的Environment和\newenvironment命令

什么是Environment

在Latex中,\begin{sth} 内容 \end{sth} 这种类型的都是environment。他描述了内容应该如何展示。

例如:

\begin{center}
这个一个系统定义好的Environments
\end{center}

center这个environment定义应该将其内容居中展示。



自定义Environment(\newenvironment命令)

定义好的environment并不能满足人们的需求,比如不同学校的摘要要求字体,格式等都不一样,所以需要自定义environment

通过\newenvironment命令可以自定义environment,格式为 \newenvironment{name}{pre}{after},其中name表示environment的名称,pre表示内容前的内容,after表示内容后的内容。 例如

\newenvironment{myenv}{文档前面的内容\par}{文档后面的内容}

\begin{myenv}
文档的内容\par
\end{myenv}

在这里插入图片描述
可以看到,使用自定义environment myenv,他会自动在文档前面和后面增加指定的内容。

\par 是指切换下一段,类似换行。


除了指定文本内容外,还可以在environment中使用environment,例如

\newenvironment{boxed}
    {
    \begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    }
    { 
    \\\\\hline
    \end{tabular} 
    \end{center}
    }
%--------------------------------------------------

boxed之前的内容

\begin{boxed}
This is the text formatted by the boxed environment
\end{boxed}

boxed之后的内容

在这里插入图片描述

上述内容等价于

文档之前的内容

\begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
文档内容
\\\\\hline
    \end{tabular} 
\end{center}

文档之后的内容

在这里插入图片描述


到这里,其实就很容易看出,environment的本质为:将\begin{name}替换为pre,将\end{name}替换为after

\newenvironment{name}{pre}{after}

\begin{name}
\end{name}

在这里插入图片描述

自定义Environment传递参数

\newenvironment{name}[参数个数][首参数默认值]{pre}{after}

定义单个参数

\newenvironment{myenv}[1][默认值]
    {参数:#1 \par}
    {}
    
\begin{myenv}
内容
\end{myenv}

\begin{myenv}[参数1]
内容
\end{myenv}

在这里插入图片描述
该实例中,定义了1个参数,参数默认值为默认值。在pre中可以使用#1获取参数。after中不能获取参数

定义多个参数

\newenvironment{myenv}[2][默认值]
    {参数:#1 \par 参数2:#2 \par}
    {}
    
\begin{myenv}[参数1]{参数2}
内容
\end{myenv}

\begin{myenv}{参数2}
内容
\end{myenv}

在这里插入图片描述
当有多个参数时,第一个参数使用[]传递,后面的参数使用{}传递

重写现有Environment

和前面一样,只需要将newenvironment改为renewenvironment 即可





实战:定义摘要

要求:

  • 标题:小二号黑体字居中
  • 正文:为小四号宋体,行距20磅,首行缩进二个字符

\documentclass{article}
\usepackage[UTF8]{ctex} % 引入宏,显示
\usepackage[UTF8]{ctex} % 引入宏,显示中文
\usepackage{type1cm} % 字体工具包
\usepackage{indentfirst} % 首行缩进
\usepackage{xeCJK} % 中文字体

\begin{document}

\newenvironment{cnabstract}
{
\begin{center}
\heiti 
\zihao{-2}
摘要
\end{center}
% 正文部分设置
\setlength{\baselineskip}{20pt} % 设置行间距为20磅
\setlength{\parindent}{2em} % 2em 代表首行缩进两个字符
\songti % 宋体
\zihao{-4} % 小四
}
{}

\begin{cnabstract}

这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要这里是摘要。

摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段摘要第二段。

\end{cnabstract}

\end{document}


在这里插入图片描述


参考资料

官方文档:https://www.overleaf.com/learn/latex/Environments
【LaTeX入门】03、设置字体相关命令: https://blog.csdn.net/xiazdong/article/details/8892070

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iioSnail

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值