一般情况下,可以在内部或边缘使用\listings
或使用类似的环境吗?\marginnote
\marginnote{
\begin{lstlisting}
test
\end{lstlisting}
}
如果没有的话,如果我只是想将编码注释放在页边距中,有什么解决方法吗?
答案1
以下是我对这个listings
包的看法。下面的代码定义了一个新环境,\lstnewenvironment
它将列表保存在一个框中,然后将其排版在一个\marginpar
(或者\marginnote
如果你喜欢):
\documentclass{article}
\usepackage[marginparwidth=5cm,includemp,showframe]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{listings,xcolor}
\newbox\marginlst
\newlength\marginlstoffset
% framerule + framesep + rulesep:
\setlength\marginlstoffset{\dimexpr2mm+3pt+2pt\relax}
\lstnewenvironment{marginlisting}
{%
\lstset{
basicstyle = \small\ttfamily,
frame = leftline ,
framerule = 2mm ,
rulecolor = \color{black!20},
breaklines = true ,
linewidth = \dimexpr\marginparwidth-\marginlstoffset\relax
}%
\setbox\marginlst\hbox\bgroup
}
{%
\egroup
% or \marginnote:
\marginpar{\hspace*{\marginlstoffset}\unhbox\marginlst}%
}
\usepackage{lipsum}
\begin{document}
Some initial words
\begin{marginlisting}
BEGIN
FOR k IN c2(o.id) LOOP
dbms_output.put_line('test');
END LOOP;
END.
\end{marginlisting}
\lipsum[2]
\end{document}
答案2
您fancyvrb
可以使用环境形式:
\documentclass{article}
\usepackage[marginparwidth=5cm,includemp]{geometry}
\usepackage{marginnote,fancyvrb,xcolor}
\usepackage{lipsum}
\newsavebox{\marginlistingbox}
\newenvironment{marginlisting}
{\fvset{tabsize=3,frame=leftline,framerule=2mm,rulecolor=\color{black!20}}%
\setbox\marginlistingbox=\vtop\bgroup
\hsize=\marginparwidth
\topsep=0pt\partopsep=0pt
\vspace*{-1.4\baselineskip}%
\Verbatim}
{\endVerbatim\egroup\marginnote{\leavevmode\box\marginlistingbox}}
\begin{document}
Some initial words%
\begin{marginlisting}
BEGIN
FOR k IN c2(o.id) LOOP
dbms_output.put_line('test');
END LOOP;
END.
\end{marginlisting}
\lipsum[2]
\end{document}
我不太抱有你能完成这件事的希望listings
。
答案3
所以最后我选择了对于在页边距中使用的小代码片段来说,它似乎非常有用(尽管据我所知没有关键字功能)fancyvrb
以下解决方案约翰·威克森指出。
% set options globally
\fvset{tabsize=3,frame=leftline,framerule=2mm,rulecolor=\color{black!20}}
% define and save
\begin{SaveVerbatim}{name}
BEGIN
FOR k IN c2(o.id) LOOP
dbms_output.put_line('test');
END LOOP;
END.
\end{SaveVerbatim}
% use it
\marginnote{\UseVerbatim{name}}
... Lorem ipsum dolor sit amet, consectetur ...
给出: