如何正确使用 \newenvironment

如何正确使用 \newenvironment

我想\newenvironment在我的 .tex 文件中使用。它应该使用衬线字体并且应该左对齐。

有人能告诉我正确的语法吗?

答案1

以下是定义使用衬线字体(\rmfamily简称为衬线字体)的环境并将其左对齐的三种方法。第三种方法\NewEnviron使用衬线字体\sffamily并将其右对齐,以显示差异。

\vskip\baselineskip不是必需的,只是为了在视觉上区分它们。

常规方法\newenvironment

\newenvironment{environmentname}[number of args][value of optional argument]{begin code}{end code}-- 这里的示例没有参数,因此[]可以省略。请注意,参数无法在部分中访问{end code}

语法\NewDocumentEnvironment类似:

\NewDocumentEnvironment{environmentname}{argument specifications}{begin code}{end code} —— 这里,参数可以在结束代码部分中使用。

\NewEnvironfromenviron包在某些方面有所不同:

\NewEnviron{environment name}[number of arguments][opt argument value]{environment start code\BODY}[environment end code}

您需要\BODY宏来显示环境内容——这是首先在中收集的\BODY。结束代码在这里是可选的。

\documentclass{article}

\usepackage{blindtext}
\usepackage{environ}
\usepackage{xparse}

\newenvironment{foo}{\rmfamily\flushleft}{\endflushleft}

\NewDocumentEnvironment{foobar}{}{\vskip\baselineskip\rmfamily\flushleft}{\endflushleft}

\NewEnviron{foobarbar}{\vskip\baselineskip\sffamily\flushright\BODY}[\endflushright]




\begin{document}
\begin{foo}
\blindtext
\end{foo}

\begin{foobar}
\blindtext
\end{foobar}

\begin{foobarbar}
\blindtext
\end{foobarbar}



\end{document}

在此处输入图片描述

更新一些字体包加载

举例来说,我正在使用bookman字体包Bookman,默认情况下它是罗马(衬线)字体 - 那么无需更改\rmfamily

\documentclass{article}

\usepackage{blindtext}
\usepackage{environ}
\usepackage{xparse}

\usepackage{bookman}

\newenvironment{foo}{\rmfamily\flushleft}{\endflushleft}

\NewDocumentEnvironment{foobar}{}{\vskip\baselineskip\rmfamily\flushleft}{\endflushleft}

\NewEnviron{foobarbar}{\vskip\baselineskip\sffamily\flushright\BODY}[\endflushright]




\begin{document}
\begin{foo}
\blindtext
\end{foo}

\begin{foobar}
\blindtext
\end{foobar}

\begin{foobarbar}
\blindtext
\end{foobarbar}



\end{document}

在此处输入图片描述

相关内容