简单自定义包错误

简单自定义包错误

我想创建一个包并使用它。

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{test}[just a test]
\RequirePackage{calc}

\newcommand{\test}
{
 Lorem Ipsum
}

\endinput

该文件名为 test.sty。在我的 main.tex 中,我使用 \usepackage{test} 来引用该包。

当我使用 MikTex / TeXworks 构建文件时,出现以下错误:

(C:/.../test.sty)
! Missing number, treated as zero.
<to be read again> 
                   j
l.9 

?

如果我按继续,还会出现以下错误:

Missing number, treated as zero. []
Missing = inserted for \ifnum. []
Missing number, treated as zero. []
LaTeX Error: Missing \begin{document}. []

我的 main.tex 文件如下所示:

\documentclass[12pt]{article}
\usepackage{color}
\usepackage{calc}
\usepackage{listings}
\usepackage{test}
\title{test}
\author{me}
\date{\today}
\begin{document}
\maketitle
\test
\end{document}

我做错了什么?

答案1

尝试编写自己的包/类是深入学习 LaTeX 的好方法。但是,这其中涉及一些黑魔法,您需要阅读文档以避免常见的陷阱。在您的特定情况下,您没有遵循 参数的预期格式。\ProvidesPackage我们如何知道正确的格式?您可以运行命令

texdoc clsguide

获取编写包和类的标准指南。在第 3.1 节中,您将找到:

类文件或包文件要做的第一件事就是标识自己。包文件按如下方式执行此操作:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{⟨package⟩}[⟨date⟩ ⟨other information⟩]

例如:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{latexsym}[1994/06/01 Standard LaTeX package]

仔细阅读日志,你就能发现 MWE 中的错误:它说它期望一个数字,但却找到了一个。代码中j唯一的一个是,的可选参数。j\ProvidesPackage[just a test]

相关内容