\usepackage{amsthm}
我正在尝试学习使用 TeX(不是 LaTeX——我以前用过 LaTeX,所以我知道“ + ”这个解决方案有多简单)从头开始构建东西,\begin{theorem}
我正在尝试构建我自己的定理环境,其中包括在左侧和右侧缩进。我知道\narrower
和\leftskip
( \rightskip
) 的作用。但是,TeX 无法识别这些控制序列。
\def\thm[#1]{\par {\leftskip 1in \rightskip 1in %
\noindent {\bf Theorem.} {\it #1 \/} \newline \noindent}
\def\endthm{ } \par}
编译后(顺便说一下,那是:
pdftex def.tex
* \input sandbox.tex
其中def.tex
包含此内容并且sandbox.tex
包含
\thm[Name of theorem] Blah blah \endthm
) 我收到错误提示“未定义控制序列”。那么到底怎么回事呢?我从阅读中得到的印象是,这些(\leftskip
,等)是内置在 TeX 中的,因此不应该是软件包问题。
另外,\noindent
第二行末尾的功能不起作用,但目前还不那么烦人。
答案1
\newline
在 Plain TeX 中没有定义。您的代码中还存在其他问题:您设置了组\leftskip
,\rightskip
但在组执行之前将其关闭。
\input plipsum % for mock text
\def\thm[#1]{%
\par % get in vertical mode
\begingroup % open a group
\leftskip 1in \rightskip 1in % set the margins
\noindent {\bf Theorem.} {\it #1}\par\nobreak % print the header
\noindent\ignorespaces % print the statement
}
\def\endthm{\par\endgroup} % end the paragraph and restore the margins
\lipsum 1
\thm[Name]
\lipsum 2
\endthm
\lipsum 3
\bye