在列表环境中右对齐预分页符号

在列表环境中右对齐预分页符号

我正在使用带有列表的breaklinesandprebreak选项,但我发现预断点符号没有垂直对齐,这在视觉上不太令人满意。我更希望它们都位于列表的最右侧。

这是示例代码。

\documentclass{standalone}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[breaklines,breakatwhitespace,prebreak=!,basicstyle=\ttfamily]
This is a long line This is a long line This is a long line This is a long line This is a long line
This is another long line This is another long line This is another long line This is another long line
\end{lstlisting}
\end{document}

得出的结果是:

在此处输入图片描述

而我想要的是类似

在此处输入图片描述

答案1

以下是一个或多或少有点丑陋的 hack。你可以将 prebreak 符号放在边距内,而不是放在当前行中。边距和文本主体之间的距离由 给出marginparsep。因此,你可以简单地调整它。该示例需要两个编译步骤。

\documentclass{article}
\usepackage{listings}

\usepackage{marginnote}
\begin{document}
\begin{lstlisting}[breaklines,breakatwhitespace,prebreak={\def\marginnotevadjust{-\baselineskip}\marginnote{\llap{!\hspace*{\marginparsep}}}},basicstyle=\ttfamily]
This is a long line This is a long line This is a long line This is a long line This is a long line
This is another long line This is another long line This is another long line This is another long line
\end{lstlisting}
\end{document}

在此处输入图片描述

答案2

因为我有同样的问题,所以偶然发现了这个帖子。虽然这个帖子很旧,但我还是想分享一下:我偶然发现了以下解决方案,它对我来说非常完美:

\documentclass{article}

\usepackage{inconsolata}
\usepackage{listings}
\usepackage{MnSymbol}

\lstset{
  basicstyle=\ttfamily,
  breaklines=true,
  prebreak={\mbox{\quad$\rhookswarrow$}},
  numbers=right,
  numberstyle={\ttfamily\scriptsize},
}

\begin{document}

\begin{lstlisting}
RewriteRule ^/wms/(.+)$ /cgi-bin/qgis_mapserv.fcgi?map=/srv/www/assip/data/mapdb/$1.qgs [QSA,PT]
RewriteRule ^/maps/([^\.]+)$ /qgis-web-client/site/qgiswebclient.html [PT]
RewriteRule ^/maps/(.*) /qgis-web-client/site/$1 [PT]
\end{lstlisting}

\end{document}

这是我从正在处理的文档中截取的一个例子:

带有分隔符的列表右对齐

我使用的符号来自\usepackage{MnSymbol}。我不确定为什么这样做有效,但我猜想这会\quad同时强制提前中断并将中断字符“推”到最右边。至少它看起来像是右对齐的。

相关内容