在预览环境中显示生成的代码行号

在预览环境中显示生成的代码行号

我想让使用包高亮的代码对应的行号minted显示在环境的输出中preview。可能是因为行号设置在了页边距中,所以结果并没有显示出来。我使用了包xleftmargin提供的选项minted,但无济于事。该怎么做呢?

该文件是在 之上编译的pdfTeX

遵循 MWE(其中的 C++ 代码是无意义的,只是为了提供一些内容):

\documentclass{memoir}

\usepackage[active,pdftex,tightpage,psfixbb]{preview}
\usepackage{xcolor}
\usepackage{minted}

\pagestyle{empty}

\begin{document}
\begin{preview}
\begin{minted}[xleftmargin=\parindent,linenos]{cpp}
#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

unsigned short i;

int main() {
  for (i = 0; i <= 5; i++) {
    // whatever
  }  
  return 0;  
}
\end{minted}
\end{preview}
\end{document}

答案1

问题是,\parindent当你评估它时,它为零。

\documentclass{memoir}

\usepackage[active,pdftex,tightpage,psfixbb]{preview}
\usepackage{xcolor}
\usepackage{minted}

\pagestyle{empty}

\begin{document}
\begin{preview}
\begin{minted}[xleftmargin=20pt,linenos]{cpp}
#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

unsigned short i;

int main() {
  for (i = 0; i <= 5; i++) {
    // whatever
  }  
  return 0;  
}
\end{minted}
\end{preview}
\end{document}

在此处输入图片描述

你可能想看看这个standalone课程:

\documentclass[
  class=memoir,
  varwidth,
  border={20 0 2 2},
]{standalone}

\usepackage{xcolor}
\usepackage{minted}

\begin{document}
\begin{minted}[linenos]{cpp}
#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

unsigned short i;

int main() {
  for (i = 0; i <= 5; i++) {
    // whatever
  }  
  return 0;  
}
\end{minted}

\end{document}

在此处输入图片描述

答案2

与此同时,我自己找到了一个简单的解决方法,它在我的帖子的整体背景下是有意义的。严格意义上来说,它不是对我帖子的回答,因为它涉及将环境包装mintedtikzpicture环境中,但它对我来说是有效的。我会暂时不检查我的“答案”,看看是否有人能想出另一个不涉及这种包装的答案。

您可以在下面找到我原来的 MWE 中要添加的相关行(我也调整了密钥的值xleftmargin)。

\begin{preview}
\begin{tikzpicture}
  \node {
  \begin{minipage}{\textwidth}
  \begin{minted}[xleftmargin=1em,linenos]{cpp}
    // Whatever C++ code to be displayed 
  \end{minted}
  \end{minipage}      
  };
\end{tikzpicture}
\end{preview}

相关内容