\begin{lstlisting}使用时同时给定language参数和caption参数报错?

发布于 2021-04-23 23:12:30

如下图,当我给lstlisting环境同时指定language参数和caption参数时就提示Undefined control sequence。只指定其中一个参数时就不报错。我的texlive是2020版本的。谢谢大家的解答

image.png
问题代码:
bug_code.zip

查看更多

关注者
0
被浏览
3.1k
乙醇
乙醇 2021-04-23
这家伙很懒,什么也没写!

下次要把代码精简一下然后给出文本形式的代码.
texdoc listings, 对于 caption 选项要用 {} 包裹
image.png

\documentclass{article}
\usepackage{listings}
\begin{document}
    \begin{lstlisting}[language=Python, caption={Python example}]
        print("Hello World")
    \end{lstlisting}
\end{document}

image.png


得到了有问题的源码, 问题来源于 elegantnote.cls 的如下部分

\RequirePackage{verbatim}
\DeclareCaptionFormat{codecaptionformat}{%
  %%\colorbox{black!20}{
  %%  \parbox{\textwidth}{#1#2\ttfamily#3}
  %%}
  \parbox{\textwidth}{\textcolor{violet}\faCode~\textcolor{violet}{#1#2}\hspace{.5em}\fzkai#3}
}
\captionsetup[lstlisting]{format=codecaptionformat}
\DeclareCaptionFormat{codecaptionformat}{%
  %%\colorbox{black!20}{
  %%  \parbox{\textwidth}{#1#2\ttfamily#3}
  %%}
  \parbox{\textwidth}{\textcolor{violet}\faCode~\textcolor{violet}{#1#2}\hspace{.5em}\fzkai#3}
}
\captionsetup[lstlisting]{format=codecaptionformat}

其中 \faCodefontawesome 宏包内的命令, \fzkai 为没有定义的字体命令.


这段代码来自 https://github.com/WisdomFusion/latex-templates , 其中关于 \fzkai 的定义为

\setCJKfamilyfont{fzkai}{方正楷体_GBK}
\newcommand{\fzkai}{\CJKfamily{fzkai}}

没有必要装新的字体, 直接用 \kaishu 就好了.


于是将这段代码修改为

\RequirePackage{fontawesome}
\RequirePackage{verbatim}
\DeclareCaptionFormat{codecaptionformat}{%
  %%\colorbox{black!20}{
  %%  \parbox{\textwidth}{#1#2\ttfamily#3}
  %%}
  \parbox{\textwidth}{\textcolor{violet}\faCode~\textcolor{violet}{#1#2}\hspace{.5em}\kaishu#3}
}
\captionsetup[lstlisting]{format=codecaptionformat}
\DeclareCaptionFormat{codecaptionformat}{%
  %%\colorbox{black!20}{
  %%  \parbox{\textwidth}{#1#2\ttfamily#3}
  %%}
  \parbox{\textwidth}{\textcolor{violet}\faCode~\textcolor{violet}{#1#2}\hspace{.5em}\kaishu#3}
}
\captionsetup[lstlisting]{format=codecaptionformat}

即可

image.png

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览