C++代码,改变字体

C++代码,改变字体

我现在在 Google 上搜索了一段时间,但找不到答案。所以再次提出问题:

我正在尝试将部分 C++ 源代码包含到 LaTeX 文档中,现在我正将其用于\lstinputlisting[language=C++, firstline=37, lastline=40]此目的,这似乎很不错。唯一让我恼火的是,似乎不可能 a) 更改文本中源代码的字体类型。(看起来像 1997 年的,不像 2018 年的 :/ )b) 加宽文本和框架之间的空间(背景颜色)现在我的示例如下:

\usepackage{listings}

    \lstset{ %
  backgroundcolor=\color{gray},  
  basicstyle=\rmfamily,
  breakatwhitespace=false,      
  breaklines=true,                
  captionpos=b,                    
  commentstyle=\color{mygreen}, 
  extendedchars=true,              
  frame=single,                   
  keepspaces=true,             
  keywordstyle=\color{blue},      
  language=c++,                 
  numbers=none,                
  numbersep=5pt,                   
  numberstyle=\tiny\color{blue}, 
  rulecolor=\color{mygray},        
  showspaces=false,               
  showtabs=false,                 
  stepnumber=5,                  
  stringstyle=\color{mymauve},    
  tabsize=3,                      
  title=\lstname                
}

\begin{document}

\lstinputlisting[language=C++, firstline=37, lastline=300]{../source/document.cc}

/end{document}

我想让它看起来更像现在的 Github(这里有一个随机的 Github 页面,代表我希望代码看起来的样子:https://github.com/tesseract-ocr/tesseract/wiki/APIExample

答案1

我建议basicstyle=\ttfamily(有几种等宽字体可用)并且columns=fullflexible

在这里我猜出了你的颜色并将背景颜色改为更浅的灰色。

就输出而言,使用lstlisting或是等效的。\lstinput

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}

\colorlet{mygray}{black!30}
\colorlet{mygreen}{green!60!blue}
\colorlet{mymauve}{red!60!blue}

\lstset{
  backgroundcolor=\color{gray!10},  
  basicstyle=\ttfamily,
  columns=fullflexible,
  breakatwhitespace=false,      
  breaklines=true,                
  captionpos=b,                    
  commentstyle=\color{mygreen}, 
  extendedchars=true,              
  frame=single,                   
  keepspaces=true,             
  keywordstyle=\color{blue},      
  language=c++,                 
  numbers=none,                
  numbersep=5pt,                   
  numberstyle=\tiny\color{blue}, 
  rulecolor=\color{mygray},        
  showspaces=false,               
  showtabs=false,                 
  stepnumber=5,                  
  stringstyle=\color{mymauve},    
  tabsize=3,                      
  title=\lstname                
}

\begin{document}

\begin{lstlisting}
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
    char *outText;

    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    // Initialize tesseract-ocr with English, without specifying tessdata path
    if (api->Init(NULL, "eng")) {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }

    // Open input image with leptonica library
    Pix *image = pixRead("/usr/src/tesseract/testing/phototest.tif");
    api->SetImage(image);
    // Get OCR result
    outText = api->GetUTF8Text();
    printf("OCR output:\n%s", outText);

    // Destroy used object and release memory
    api->End();
    delete [] outText;
    pixDestroy(&image);

    return 0;
}
\end{lstlisting}

\end{document}

在此处输入图片描述

另一种选择是minted

\documentclass{article}
\usepackage{xcolor}
\usepackage{minted}

\begin{document}

\begin{minted}{c++}
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
    char *outText;

    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    // Initialize tesseract-ocr with English, without specifying tessdata path
    if (api->Init(NULL, "eng")) {
        fprintf(stderr, "Could not initialize tesseract.\n");
        exit(1);
    }

    // Open input image with leptonica library
    Pix *image = pixRead("/usr/src/tesseract/testing/phototest.tif");
    api->SetImage(image);
    // Get OCR result
    outText = api->GetUTF8Text();
    printf("OCR output:\n%s", outText);

    // Destroy used object and release memory
    api->End();
    delete [] outText;
    pixDestroy(&image);

    return 0;
}
\end{minted}

\end{document}

在此处输入图片描述

minted如果你想要一个 21 世纪的等宽字体,下面是添加后的结果

\usepackage{sourcecodepro}

\setminted{fontsize=\footnotesize}

(或者您可以一开始就使用特定选项缩放字体)。

在此处输入图片描述

相关内容