我想创建一个包并使用它。
\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]