• listings技巧


    1. lstdefinestyle

    参考 https://blog.csdn.net/ProgramChangesWorld/article/details/52142313

    我们在使用listings的时候,需要设置语言和样式。用lstset会设置全局的变量,如果我们文章中有多种代码,那么就需要lstdefinestyle,设置多种样式,在使用的时候选择对应的样式。

    % system=ubuntu
    %soft=Tex Live2015
    % complie=XeLaTeX
    documentclass[a4paper,UTF8]{article}
    usepackage{listings}
    usepackage{ctex}
    usepackage{color}
    definecolor{keywordcolor}{rgb}{0.8,0.1,0.5}
    definecolor{webgreen}{rgb}{0,.5,0}
    definecolor{bgcolor}{rgb}{0.92,0.92,0.92}
    
    lstdefinestyle{styleJ}{
        language=[AspectJ]Java,
        keywordstyle=color{keywordcolor}fseries, 
        commentstyle=color{blue} 	extit, 
        showstringspaces=false,
        numbers=left,
        numberstyle=small
    }
    lstdefinestyle{styleP}{
        language=Python,
        numbers=right, 
        frame=single,
        numberstyle=small ,
    }
    egin{document}
    egin{lstlisting}[style=styleJ]
    public int sum(int n){
        int sum = 0;
        for(int i=0;i<n;i++){  //开始的
            sum += i;         
        }
        return sum;
    }
    end{lstlisting}
    
    egin{lstlisting}[style=styleP]
    def fun():
        print('你好,世界') #我是注释
    end{lstlisting}
    
    end{document}

    可以看到使用lstdefinestyle定义了两个样式,styleJ和styleP,分别是java和python的样式,在使用lstlisting环境的时候调设置了这两个样式。

    如果不想把代码放在.tex文件里,也可以把代码放在单独的文件,然后使用下面的命令即可:

    lstinputlisting[style=styleJ]{code.java}

     2. listings样式1

    参考 https://tex.stackexchange.com/questions/68091/how-do-i-add-syntax-coloring-to-my-c-source-code-in-beamer

    documentclass{beamer}
     setbeamercovered{transparent}
    usepackage{listings}
    
    egin{document}
    
    % Using typewriter font: 	tfamily inside lstset
    egin{frame}[fragile]
    frametitle{Inserting source code}
    lstset{language=C++,
                    basicstyle=	tfamily,
                    keywordstyle=color{blue}	tfamily,
                    stringstyle=color{red}	tfamily,
                    commentstyle=color{green}	tfamily,
                    morecomment=[l][color{magenta}]{#}
    }
    egin{lstlisting}
        #include<stdio.h>
        #include<iostream>
        // A comment
        int main(void)
        {
        printf("Hello World
    ");
        return 0;
        }
    end{lstlisting}
    end{frame}
    
    egin{frame}[fragile]
    frametitle{Inserting source code without setting typewriter}
    lstset{language=C++,
                    keywordstyle=color{blue},
                    stringstyle=color{red},
                    commentstyle=color{green},
                    morecomment=[l][color{magenta}]{#}
    }
    egin{lstlisting}
        #include<stdio.h>
        #include<iostream>
        // A comment
        int main(void)
        {
        printf("Hello World
    ");
        return 0;
        }
    end{lstlisting}
    end{frame}
    end{document}

     

     第一种使用了 tfamily,这个是一种打印机字体。

    参考 https://www.tug.org/pracjourn/2006-1/schmidt/schmidt.pdf

    https://tug.org/FontCatalogue/typewriterfonts.html

    	tfamilyselects a monospaced (“typewriter”) font family

     3. listings样式2

    参考 https://tex.stackexchange.com/questions/409705/c-code-change-the-font

    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=	tfamily,
      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=	inycolor{blue}, 
      rulecolor=color{mygray},        
      showspaces=false,               
      showtabs=false,                 
      stepnumber=5,                  
      stringstyle=color{mymauve},    
      tabsize=3,                      
      title=lstname                
    }
    
    egin{document}
    
    egin{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.
    ");
            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:
    %s", outText);
    
        // Destroy used object and release memory
        api->End();
        delete [] outText;
        pixDestroy(&image);
    
        return 0;
    }
    end{lstlisting}
    
    end{document}

  • 相关阅读:
    【线程间通信:代码示例:分析问题原因:修正代码】
    【死锁问题】
    【解决线程安全问题:通过Lock锁对象】
    【解决线程安全问题:同步方法】
    【解决线程安全问题:同步代码块】
    【线程实现的两种方式及区别】
    小阳的贝壳
    小石的妹子
    SPFA模板+dfs版检测负环
    逆序对模板
  • 原文地址:https://www.cnblogs.com/studywithallofyou/p/11505083.html
Copyright © 2020-2023  润新知