And*_*ech 7 latex newenvironment
我试图在LaTeX中实现这个新环境:
\newenvironment{javacode}[2]
{\begin{lstlisting}[language=java, label=#1, caption=#2]}
{\end{lstlisting}}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
\begin{javacode}{c}{some code}
int x = 5;
\end{javacode}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Overfull \hbox (6.0pt too wide) in paragraph at lines 6--6
[][][][][][][]
[1] [2]) [3])
*
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助修复这个问题?
[更新]
我尝试过这样做,就像Red-nosed unicorn指示的那样,并且它正常工作.
但现在我尝试添加\begin{singlespace}如下:
\lstnewenvironment{javacode}[2]
{
\begin{singlespace}
\lstset{language=java, label=#1, caption=#2}}
{
\end{singlespace}
}
Run Code Online (Sandbox Code Playgroud)
我得到了同样的错误:
Overfull \hbox (6.0pt too wide) in paragraph at lines 6--6
[][][][][][][]
[1]) [2] [3])
*
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 17
这是一种特殊情况,因为列表环境需要自行解析以找到自身的结束.其原因是,宏内部的上市环境不能得到扩展-这当然也包括环境的结束标记.
因此,如果该行包含,基本上它会在每一行中查找\end{lstlisting}- 但在您的情况下,由于\end{javacode}宏尚未展开,因此不存在此类行.因此列表继续搜索直到文件结束.
清单定义了一个自己的命令来解决这个问题.从文档:
\lstnewenvironment
{?name?}[?number?][?opt. default arg.?]
{?starting code?}
{?ending code?}
Run Code Online (Sandbox Code Playgroud)
例如:
\lstnewenvironment{javacode}[2]
{\lstset{language=java, label=#1, caption=#2}}
{}
Run Code Online (Sandbox Code Playgroud)
编辑响应您编辑的问题:我尝试编译以下最小的"工作"示例.实际上,它并没有那么多工作 - latex处理器只是在中间停止并等待用户输入.
由于列表文档没有提及特殊处理singlespace,我想你可能已经发现了一个bug.最好的做法可能是从列表包的维护者那里获得反馈.
% 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}
Run Code Online (Sandbox Code Playgroud)
经过进一步研究,我发现了这个http://www.tug.org/pipermail/texhax/2009-June/012699.html
为了解决我的解决方案,我需要使用\singlespacing而不是singlespace环境。
以下是我现在的工作代码:
\lstnewenvironment{javacode}[2]
{\singlespacing\lstset{language=java, label=#1, caption=#2}}
{}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6851 次 |
| 最近记录: |