【问题标题】:Formatting source listings with listings & framed packages使用列表和框架包格式化源列表
【发布时间】:2009-11-08 23:23:08
【问题描述】:

我目前有一个问题,列表包无法跨多个页面传播源文件。在文档中,“框架”包应用于各种格式化选项。不幸的是,我没有找到“框架”包的任何文档。对于 C# 源,我当前的源格式如下所示:

Source Formatting http://www.free.image.hosting.net/uploads/88987a1ef4.png


很遗憾,图片服务已不存在,我找不到该图片,因为该帖子是 5 年前发布的。我记得的是格式化的源代码部分,应该在下一页上可见,只是被截断了,根本没有显示出来。

我对“列表”包的格式是:

\newcommand{\sourceFormatterCSharp}
{
\lstset
{ language=[Sharp]C
, captionpos=b
%, frame=lines
, morekeywords={var, get, set}
, basicstyle=\footnotesize\ttfamily
, keywordstyle=\color{blue}
, commentstyle=\color{darkgreen}
, stringstyle=\color{darkred}
, backgroundcolor=\color{lightgrey}
, numbers=left
, numberstyle=\scriptsize
, stepnumber=2
, numbersep=5pt
, breaklines=true
, tabsize=2
, showstringspaces=false
, emph={double, bool, int, unsigned, char, true, false, void, get, set}
, emphstyle=\color{blue}
, emph={Assert, Test}
, emphstyle=\color{red}
, emph={[2]\#using, \#define, \#ifdef, \#endif}
, emphstyle={[2]\color{blue}}
, frame=shadowbox
, rulesepcolor=\color{grey}
, lineskip={-1.5pt} % single line spacing
}
}

% first optional param is placement
% param1 file name without extension
% param2 chapter number, e.g. 1 or 2 ...
% param3 caption to use
\newcommand{\embedCSharp}[4][htbp]
{
\sourceFormatterCSharp
\includeListing{#1}{#4}{#3:#2}{#3/#2.cs}
}

任何人都可以帮助我使用“框架”包或任何其他方法来实现相似的外观结果,让我的来源看起来像这样但可以跨页面分发吗? 一个如何在框架中嵌入列表的示例并不令人满意,因为到目前为止我自己。

【问题讨论】:

  • 我一直在寻找一种单一空间列表的方法,但偶然发现了这一点。感谢您的帖子!
  • 你会碰巧拥有现在丢失的图像的副本吗?没有它,这个问题需要认真的帮助。
  • 我投票决定将此问题作为离题结束,因为对问题陈述至关重要的场外图像现在是死链接。

标签: formatting latex listings


【解决方案1】:

列表包已经支持跨页面拆分代码;请参见下面的示例(对长列表感到抱歉)。请注意,您不能有一个跨越页面的浮动,因此您需要使用标题包(例如)在 lstlisting 环境的开头插入标题。

\documentclass{文章} \usepackage[a5paper,landscape]{几何} \usepackage{xcolor,listings} \开始{文档} \definecolor{lightgrey}{灰色}{0.8} \lstset { 标题位置=b , 背景颜色=\颜色{浅灰色} , 数字=左 , numberstyle=\scriptsize , 步数=2 , numberep=5pt , 框架=阴影框 , 规则epcolor=\color{gray} } \开始{lstlisting} 一种 b C d e F G H 一世 j ķ l 米 n ○ p q r s 吨 你 v w X 是的 z 一种 b C d e F G H 一世 j ķ l 米 n ○ p q r s 吨 你 v w X 是的 z \end{lstlisting} \结束{文档}

【讨论】:

  • 这里的问题是我所有的字幕都在底部。这是文档的样式。我不能只在源列表中引入标题,而是在下面的任何其他地方使用标题。有时我有 2 行长的标题,看起来很奇怪,在列表顶部有 2 行长的标题。有一个像“framed”这样完全不产生边框和边距的包会很好。我知道我不会在分页的列表中没有结束行,但我可以忍受。
  • 在多页表格的开头有标题是标准的。在我看来,在这里也可以这样做。我不知道您对使用 framed 包是什么意思,因为列表已经会超出页面,所以我看不出它可以如何改进。
  • 是的,你是对的。我测试了它,它有效。如果我可以为中断设置一些边距会很酷,这样文本不会在中断后立即开始,看起来有点奇怪。但无论如何,非常感谢您的帮助!
【解决方案2】:

框架文档位于 .sty 文件本身中。像这样使用它:

\documentclass{文章} \usepackage{装裱,唇彩} \开始{文档} \开始{框架} \lipsum[1-10] \结束{框架} \结束{文档}

从文档中,您还可以使用:

  • framed -- 边缘在边距的普通框架框 (\fbox)
  • shaded -- 阴影背景 (\colorbox) 渗入边缘
  • snugshade -- 类似
  • leftbar -- 左边距中的粗竖线

在上面的示例中放置您的列表而不是lipsum 将允许多页代码,并且所有页面都带有一个框架;您将无法获得与列表相同的输出,但应该能够进行调整以使事情看起来不错。

【讨论】:

  • 感谢您的回答,但我想获得相同的列表。另一点是,标题将出现在哪里。在我尝试之后,我的边框上出现了行号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2011-05-20
  • 2014-10-28
相关资源
最近更新 更多