我正在尝试创建一个新的命令或环境或其他东西来格式化本质上是部分的内容,但它需要有自己的计数器。我不想使用任何 \section \subsection 等,因为我深入了解它们提供的全部功能。
我的想法是输入类似这样的内容......
\session{Hello World}
...它会输出类似的内容(虽然居中)...
第 1 节:Hello World
我目前得到的命令如下:
\newcounter{sessioncounter}
\newcommand{\session}
{
\begin{center}
\begin{emph}
\begin{textbf}
\begin{Large}
Session \value{sessioncounter}\stepcounter{sessioncounter}:
}{
\end{Large}
\end{textbf}
\end{emph}
\end{center}
}
尝试这样做时,Latex 编译器会抛出以下错误(请注意,这是在调用 \begin{document} 之前)。
LaTeX 错误:\begin{document} 以 \end{Large} 结束
我还尝试通过将 \newcommand{\session} 替换为 \newenvironment{session} 来创建新环境。在编译时,我在 \begin{session} 行上收到以下错误。
缺少插入的 \endcsname。
<to be read again>
\aftergroup
l.13 \开始{会话}
有人能看出我哪里错了吗?根据错误,我推测 newcommand 不能完全按照我想要的语法使用;但是,我也不明白为什么环境也不起作用。
答案1
您的定义符合以下格式环境,而不是命令。
环境的定义方式如下:
\newenvironment{example}{<starting commands>}{<ending commands>}
然后像这样使用它们:
\begin{example}
<text>
\end{example}
但我认为你想要一个命令像本例一样,它接受一个参数。此外,\thesessioncounter
它还会以文本形式提供数字;\value
供其他内部命令使用。(我也对格式命令做了一些调整。)
\documentclass{article}
\newcounter{sessioncounter}
\newcommand{\session}[1]{%
\hfil\bgroup\Large\itshape\bfseries
Session~\thesessioncounter: #1\egroup\par\bigskip
\stepcounter{sessioncounter}%
}
\begin{document}
\session{Hello World}
\session{Hello again}
\session{Hello for the last time}
\end{document}
答案2
您不能做\begin{textbf}
这一件事,\begin{emph}
而且您也不应该做这\begin{Large}
件事。
你要
\newcommand{\session}[1]{%
\begin{center}\Large\itshape\bfseries
\stepcounter{sessioncounter}%
Session \value{sessioncounter}: #1%
\end{center}%
}
在序言中并使用
\session{Hello world}
在文档中。