我想\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}
—— 这里,参数可以在结束代码部分中使用。
\NewEnviron
fromenviron
包在某些方面有所不同:
\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}