gpt4 book ai didi

latex - 在 LaTeX 中创建新环境的问题

转载 作者:行者123 更新时间:2023-12-04 09:38:05 25 4
gpt4 key购买 nike

我正在尝试在 LaTeX 中实现这个新环境:

\newenvironment{javacode}[2]
{\begin{lstlisting}[language=java, label=#1, caption=#2]}
{\end{lstlisting}}

然后像这样使用它:
\begin{javacode}{c}{some code}
int x = 5;
\end{javacode}

但我收到以下错误:
Overfull \hbox (6.0pt too wide) in paragraph at lines 6--6
[][][][][][][]
[1] [2]) [3])
*

任何人都可以帮助解决这个问题吗?

[更新]

我试过这样做 Red-nosed unicorn指示,它工作正常。

但现在我尝试添加一个 \begin{singlespace}像这样:
\lstnewenvironment{javacode}[2]
{
\begin{singlespace}
\lstset{language=java, label=#1, caption=#2}}
{
\end{singlespace}
}

我得到了同样的错误:
Overfull \hbox (6.0pt too wide) in paragraph at lines 6--6
[][][][][][][]
[1]) [2] [3])
*

最佳答案

这是一个特殊情况,因为列表环境需要自己提前解析以找到自己的结尾。原因是列表环境中的宏不能被扩展——这当然包括环境的结束标记。

所以基本上它会在每一行中查找,如果该行包含 \end{lstlisting} – 但在你的情况下,自 \end{javacode} 以来不存在这样的行宏尚未展开。所以列表会继续搜索,直到文件结束。

Listings 定义了一个自己的命令来解决这个问题。从文档:

\lstnewenvironment 
{⟨name⟩}[⟨number⟩][⟨opt. default arg.⟩]
{⟨starting code⟩}
{⟨ending code⟩}

例如:
\lstnewenvironment{javacode}[2]
{\lstset{language=java, label=#1, caption=#2}}
{}

编辑 针对您编辑的问题:我尝试编译以下最小的“工作”示例。实际上,它并没有那么多工作 - latex处理器只是在中间停止并等待用户输入。

由于列表文档没有提到对 singlespace 的特殊处理。 ,我想你可能已经发现了一个错误。最好的做法可能是从列表包的维护者那里获得反馈。
% mini.dvi
\documentclass{article}

\usepackage{listings}
\usepackage{setspace}
\doublespacing

\lstnewenvironment{javacode}
{\begin{singlespace}
\lstset{language=java}}
{\end{singlespace}}

\begin{document}
\begin{javacode}
int a = 1;
int b = 2;
\end{javacode}
\end{document}

关于latex - 在 LaTeX 中创建新环境的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com