在 Latex 文档中插入内联代码块

在 Latex 文档中插入内联代码块

你好,我正在尝试在 Latex 文档中添加内联代码块。我知道如何使用添加单独的代码块,lstlisting但我想添加内联代码块。我附上了期望的输出的屏幕截图。正如您在同一行中看到的,添加了一个包含表达式的代码块print(g)。我想要这样的东西。这样它应该是可定制的,即框的背景颜色、框的宽度和高度、边框宽度等。此外,该内联代码块内的代码文本也应该是可定制的。有没有办法在 Latex 中实现这一点?下面是屏幕截图。

在此处输入图片描述

答案1

这是可能的,这里有一种方法可以做到。(此代码摘录自我维护的一个包,出于某种原因,realboxes必须在之后加载xcolor,而在我的包中,它加载了其他几个包,情况并非如此,我还不确定为什么。)

背景颜色是该\Colorbox命令的一个参数。

% !TEX program = lualatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{realboxes} % needed for \Colorbox

\definecolor{gsbggray}     {rgb}{0.90,0.90,0.90} % background gray
\definecolor{gsgray}       {rgb}{0.30,0.30,0.30} % gray
\definecolor{gsgreen}      {rgb}{0.00,0.60,0.00} % green
\definecolor{gsorange}     {rgb}{0.80,0.45,0.12} % orange
\definecolor{gspeach}      {rgb}{1.00,0.90,0.71} % peach
\definecolor{gspearl}      {rgb}{0.94,0.92,0.84} % pearl
\definecolor{gsplum}       {rgb}{0.74,0.46,0.70} % plum
\lstdefinestyle{vpython}{%                       % style for listings
  backgroundcolor=\color{gsbggray},%             % background color
  basicstyle=\footnotesize,%                     % default style
  breakatwhitespace=true%                        % break at whitespace
  breaklines=true,%                              % break long lines
  captionpos=b,%                                 % position caption
  classoffset=1,%                                % STILL DON'T UNDERSTAND THIS
  commentstyle=\color{gsgray},%                  % font for comments
  deletekeywords={print},%                       % delete keywords from the given language
  emph={self,cls,@classmethod,@property},%       % words to emphasize
  emphstyle=\color{gsorange}\itshape,%           % font for emphasis
  escapeinside={(*@}{@*)},%                      % add LaTeX within your code
  frame=tb,%                                     % frame style
  framerule=2.0pt,%                              % frame thickness
  framexleftmargin=5pt,%                         % extra frame left margin
  %identifierstyle=\sffamily,%                    % style for identifiers
  keywordstyle=\sffamily\color{gsplum},%         % color for keywords
  language=Python,%                              % select language
  linewidth=\linewidth,%                         % width of listings
  morekeywords={%                                % VPython/GlowScript specific keywords
    __future__,abs,acos,align,ambient,angle,append,append_to_caption,%
    append_to_title,arange,arrow,asin,astuple,atan,atan2,attach_arrow,%
    attach_trail,autoscale,axis,background,billboard,bind,black,blue,border,%
    bounding_box,box,bumpaxis,bumpmap,bumpmaps,camera,canvas,caption,capture,%
    ceil,center,clear,clear_trail,click,clone,CoffeeScript,coils,color,combin,%
    comp,compound,cone,convex,cos,cross,curve,cyan,cylinder,data,degrees,del,%
    delete,depth,descender,diff_angle,digits,division,dot,draw_complete,%
    ellipsoid,emissive,end_face_color,equals,explog,extrusion,faces,factorial,%
    False,floor,follow,font,format,forward,fov,frame,gcurve,gdisplay,gdots,%
    get_library,get_selected,ghbars,global,GlowScript,graph,graphs,green,gvbars,%
    hat,headlength,headwidth,height,helix,hsv_to_rgb,index,interval,keydown,%
    keyup,label,length,lights,line,linecolor,linewidth,logx,logy,lower_left,%
    lower_right,mag,mag2,magenta,make_trail,marker_color,markers,material,%
    max,min,mouse,mousedown,mousemove,mouseup,newball,norm,normal,objects,%
    offset,one,opacity,orange,origin,path,pause,pi,pixel_to_world,pixels,plot,%
    points,pos,pow,pps,print,print_function,print_options,proj,purple,pyramid,%
    quad,radians,radius,random,rate,ray,read_local_file,readonly,red,redraw,%
    retain,rgb_to_hsv,ring,rotate,round,scene,scroll,shaftwidth,shape,shapes,%
    shininess,show_end_face,show_start_face,sign,sin,size,size_units,sleep,%
    smooth,space,sphere,sqrt,start,start_face_color,stop,tan,text,textpos,%
    texture,textures,thickness,title,trail_color,trail_object,trail_radius,%
    trail_type,triangle,trigger,True,twist,unbind,up,upper_left,upper_right,%
    userpan,userspin,userzoom,vec,vector,vertex,vertical_spacing,visible,%
    visual,vpython,VPython,waitfor,white,width,world,xtitle,yellow,yoffset,%
    ytitle%
  },%
  morekeywords={print,None,TypeError},%          % additional keywords
  morestring=[b]{"""},%                          % treat triple quotes as strings
  numbers=left,%                                 % where to put line numbers
  numbersep=10pt,%                               % how far line numbers are from code
  numberstyle=\bfseries\tiny,%                   % set to 'none' for no line numbers
  showstringspaces=false,%                       % show spaces in strings
  showtabs=false,%                               % show tabs within strings
  stringstyle=\color{gsgreen},%                  % color for strings
  upquote=true,%                                 % how to typeset quotes
}%

\newcommand*{\pythonline}[1]{\Colorbox{gsbggray}{\lstinline[style=vpython]{#1}}}

\begin{document}

You can type \pythonline{print("Hello, world!")} as your first program.

\end{document}

MWE 输出

更新:

这里有一个变体,展示了如何使用它tcolorbox来实现您希望的结果。尝试各种选项!

% !TEX program = lualatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{realboxes} % needed for \Colorbox
\usepackage[most]{tcolorbox}

\definecolor{gsbggray}     {rgb}{0.90,0.90,0.90} % background gray
\definecolor{gsgray}       {rgb}{0.30,0.30,0.30} % gray
\definecolor{gsgreen}      {rgb}{0.00,0.60,0.00} % green
\definecolor{gsorange}     {rgb}{0.80,0.45,0.12} % orange
\definecolor{gspeach}      {rgb}{1.00,0.90,0.71} % peach
\definecolor{gspearl}      {rgb}{0.94,0.92,0.84} % pearl
\definecolor{gsplum}       {rgb}{0.74,0.46,0.70} % plum
\lstdefinestyle{vpython}{%                       % style for listings
  backgroundcolor=\color{gsbggray},%             % background color
  basicstyle=\footnotesize,%                     % default style
  breakatwhitespace=true%                        % break at whitespace
  breaklines=true,%                              % break long lines
  captionpos=b,%                                 % position caption
  classoffset=1,%                                % STILL DON'T UNDERSTAND THIS
  commentstyle=\color{gsgray},%                  % font for comments
  deletekeywords={print},%                       % delete keywords from the given language
  emph={self,cls,@classmethod,@property},%       % words to emphasize
  emphstyle=\color{gsorange}\itshape,%           % font for emphasis
  escapeinside={(*@}{@*)},%                      % add LaTeX within your code
  frame=tlrb,%                                     % frame style
  framerule=2.0pt,%                              % frame thickness
  framexleftmargin=5pt,%                         % extra frame left margin
  %identifierstyle=\sffamily,%                    % style for identifiers
  keywordstyle=\sffamily\color{gsplum},%         % color for keywords
  language=Python,%                              % select language
  linewidth=\linewidth,%                         % width of listings
  morekeywords={%                                % VPython/GlowScript specific keywords
    __future__,abs,acos,align,ambient,angle,append,append_to_caption,%
    append_to_title,arange,arrow,asin,astuple,atan,atan2,attach_arrow,%
    attach_trail,autoscale,axis,background,billboard,bind,black,blue,border,%
    bounding_box,box,bumpaxis,bumpmap,bumpmaps,camera,canvas,caption,capture,%
    ceil,center,clear,clear_trail,click,clone,CoffeeScript,coils,color,combin,%
    comp,compound,cone,convex,cos,cross,curve,cyan,cylinder,data,degrees,del,%
    delete,depth,descender,diff_angle,digits,division,dot,draw_complete,%
    ellipsoid,emissive,end_face_color,equals,explog,extrusion,faces,factorial,%
    False,floor,follow,font,format,forward,fov,frame,gcurve,gdisplay,gdots,%
    get_library,get_selected,ghbars,global,GlowScript,graph,graphs,green,gvbars,%
    hat,headlength,headwidth,height,helix,hsv_to_rgb,index,interval,keydown,%
    keyup,label,length,lights,line,linecolor,linewidth,logx,logy,lower_left,%
    lower_right,mag,mag2,magenta,make_trail,marker_color,markers,material,%
    max,min,mouse,mousedown,mousemove,mouseup,newball,norm,normal,objects,%
    offset,one,opacity,orange,origin,path,pause,pi,pixel_to_world,pixels,plot,%
    points,pos,pow,pps,print,print_function,print_options,proj,purple,pyramid,%
    quad,radians,radius,random,rate,ray,read_local_file,readonly,red,redraw,%
    retain,rgb_to_hsv,ring,rotate,round,scene,scroll,shaftwidth,shape,shapes,%
    shininess,show_end_face,show_start_face,sign,sin,size,size_units,sleep,%
    smooth,space,sphere,sqrt,start,start_face_color,stop,tan,text,textpos,%
    texture,textures,thickness,title,trail_color,trail_object,trail_radius,%
    trail_type,triangle,trigger,True,twist,unbind,up,upper_left,upper_right,%
    userpan,userspin,userzoom,vec,vector,vertex,vertical_spacing,visible,%
    visual,vpython,VPython,waitfor,white,width,world,xtitle,yellow,yoffset,%
    ytitle%
  },%
  morekeywords={print,None,TypeError},%          % additional keywords
  morestring=[b]{"""},%                          % treat triple quotes as strings
  numbers=left,%                                 % where to put line numbers
  numbersep=10pt,%                               % how far line numbers are from code
  numberstyle=\bfseries\tiny,%                   % set to 'none' for no line numbers
  showstringspaces=false,%                       % show spaces in strings
  showtabs=false,%                               % show tabs within strings
  stringstyle=\color{gsgreen},%                  % color for strings
  upquote=true,%                                 % how to typeset quotes
}%

\newcommand*{\pythonline}[1]{\Colorbox{gsbggray}{\lstinline[style=vpython]{#1}}}
\DeclareTotalTCBox{\tcbpythonline}{ m }{%
  leftrule=0.1mm,%
  rightrule=0.1mm,%
  toprule=0.1mm,%
  bottomrule=0.1mm,%
  sharp corners,%
  top=0pt,%
  bottom=0pt,%
  left=0pt,%
  right=0pt,%
  tcbox raise base,%
  boxsep=1.0mm,%
  nobeforeafter,%
  }{\lstinline[style=vpython]{#1}}

\begin{document}

You can type \pythonline{print("Hello, world!")} as your first program.

You can type \tcbpythonline{print("Hello, world!")} as your first program.

\end{document}

新的 MWE 输出

答案2

由于您熟悉 listing 包及其lstlisting环境,\lstinline因此您可以使用其宏来排版内联代码块。

在此处输入图片描述

\documentclass{article}
\usepackage{listings} % for '\lstset' and '\lstinline' macros
% For this example, we use just a very basic set of arguments for \lstset:
\lstset{basicstyle=\ttfamily,keywordstyle=\underbar,morekeywords={print}}
\begin{document}
\sffamily\bfseries % just to mimic the OP's screenshot
The command \lstinline{print(g)} prints something.
\end{document}

相关内容