是否可以在不使用 \usepackage 命令的情况下在 LaTeX 文档中包含自制环境。
新的环境代码集:
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentEnvironment {mytabular} { O{\,} }
{
\char_set_catcode_other:N \&
\char_set_catcode_alignment:n {`#1}
\begin{tabular}
}
{
\end{tabular}
}
\ExplSyntaxOff
通过使用以下命令将上述内容作为包包含\usepackage
:
\documentclass[12pt]{article}
\usepackage{tabularDelimiter}
\begin{document}
\begin{mytabular}[@]{|c|c|}
A @ B\\
C @ D
\end{mytabular}
\end{document}
答案1
这取决于您的要求。如果要求只是为了避免\usepackage
,您可以改用\RequirePackage
(相同语法)。
您也可以使用\input
。
答案2
编辑
如果你不能在序言中包含环境,那么答案很遗憾不。
如果环境不是内置的,即未在 中定义latex.ltx
,则必须定义它,或者使用已定义它的包。第一个选项是下面的原始答案,但由于您无法做到这一点,因此您只有一个选择,那就是使用\usepackage
。
原始答案
mytabular
好的,我假设您在包中包含了环境的定义tablularDelimiter
。
\documentclass[12pt]{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentEnvironment {mytabular} { O{\,} }
{
\char_set_catcode_other:N \&
\char_set_catcode_alignment:n {`#1}
\begin{tabular}
}
{
\end{tabular}
}
\ExplSyntaxOff
\begin{document}
\begin{mytabular}[@]{|c|c|}
A @ B\\
C @ D
\end{mytabular}
\end{document}
答案3
您可以在序言中定义一个新的环境。
\newenvironment{name}[nargs]{begdef}{enddef}
其中是新环境的名称,name
如\begin{name}
...。是参数的数量(0 到 9,但如果是 0,则可以省略),是在环境开始时执行的代码,是在环境结束时执行的代码。 \end{name}
nargs
begdef
enddef