使用 apa6 文档类中的 \lstlistoflistings

使用 apa6 文档类中的 \lstlistoflistings

我想在目录中插入包含章节编号的列表。清单文档不足以解决这个问题。

我正在使用 apa6 文档类,默认情况下它是未编号的。我已经进行了一些调整,将编号引入目录中。具体来说,我通过以下方式解决了图表列表中的类似问题:

\section{List of Figures}
\renewcommand\listfigurename{}
\listoffigures

请查看以下两张图片来了解问题所在。下面添加了一个最小工作示例 (MWE)。

这里缺少清单列表:

这里缺少清单列表!

列表列表应该编号,但是没有:

清单列表应该编号!

这是最小工作示例:

\documentclass[doc,11pt]{apa6}
\usepackage[utf8]{inputenc}

\newcommand{\titlevariable}{Good Paper}

\usepackage{amsmath}

\usepackage{hyperref}

\usepackage{listings}
\renewcommand{\lstlistingname}{Code Snippet}
\renewcommand{\lstlistlistingname}{List of \lstlistingname s}

% Turning section numbering back on (turned off by apa6 document class)
\setcounter{secnumdepth}{3}

\usepackage[american]{babel}
\usepackage[UKenglish]{datetime}

\usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{bibliography.bib}

\title{\titlevariable}

\author{A Cool Guy}
\affiliation{Nice Uni}
\shorttitle{\titlevariable}

\abstract{\ \\
    Abstract ABC
}
\keywords{A, B, C}
\begin{document}

\thispagestyle{empty} \maketitle 

\thispagestyle{empty} 

\newpage 

\thispagestyle{empty} \tableofcontents 

\newpage

\pagenumbering{arabic}

\section{Foo Section}

\begin{lstlisting}[caption={A listing}]
Some Fancy Code
\end{lstlisting}

\newpage \printbibliography

\section{List of Figures}
\renewcommand\listfigurename{}
\listoffigures

\newpage  %\section{List of Code Snippets}
% \renewcommand\lstlistingname{}
%\renewcommand{\lstlistoflistings}{\begingroup\tocfile{\lstlistingname}{List of Code Snippets}\endgroup}

%\addcontentsline{toc}{section}{List of Code Snippets}
%\addtocontents{toc}{\contentsline {section}{\numberline {}ANEXOS:}{}}
%\addcontentsline{toc}{section}{8\ \ List of Code Snippets}
%\addtocounter{section}{1}
\lstlistoflistings

\newpage \section{Appendix}

\end{document}

答案1

你做事的方式确实有点不合时宜,最好使用常规的列表分段命令。为此,我使用了tocloft带有[titles]选项的包,它将使用标准分段命令。由于它使用\section*而不是部分,我已使用修补命令etoolbox以摆脱*相关\listof...命令中的。

代码listings的工作方式略有不同,因此对于该列表,我只是重新定义了它的命令以匹配标准\listof...定义。

biblatex再次以不同的方式定义参考书目标题代码,但它有内置方法来重新定义它。这必须在文档的开头完成,所以我将相关命令包装在 中\AtBeginDocument

我从您的示例文档中删除了不相关的包和代码,但将其移至hyperref序言末尾作为提醒:它通常应该最后加载。

\documentclass[doc,11pt]{apa6}
\usepackage[titles]{tocloft}
\usepackage{etoolbox}
\usepackage{csquotes}
\usepackage[american]{babel}
\usepackage[UKenglish]{datetime}
\usepackage[style=apa]{biblatex}
% redefine bibheading to be a regular section
\AtBeginDocument{\defbibheading{bibliography}[\bibname]{%
\section{#1}%
\markboth{#1}{#1}}}
\addbibresource{biblatex-examples.bib}
\usepackage{listings}
\renewcommand{\lstlistingname}{Code Snippet}
\renewcommand{\lstlistlistingname}{List of Code Snippets}
% Use standard sectioning code for lstlistoflistings
\makeatletter
\renewcommand{\lstlistoflistings}{\section{\lstlistlistingname }\@mkboth {\MakeUppercase \lstlistlistingname }{\MakeUppercase \lstlistlistingname }\@starttoc {lol}}
\makeatother
% Make listoftables and listoffigures numbered sections
\patchcmd{\listoffigures}{*}{}{}{}
\patchcmd{\listoftables}{*}{}{}{}


% Turning section numbering back on (turned off by apa6 document class)
\setcounter{secnumdepth}{3}

\usepackage[american]{babel}
\usepackage[UKenglish]{datetime}


\usepackage{hyperref} % load this as late a possible

% Separate content assignment from package loading
\newcommand{\titlevariable}{Good Paper}
\title{\titlevariable}

\author{A Cool Guy}
\affiliation{Nice Uni}
\shorttitle{\titlevariable}

\abstract{\ \\
    Abstract ABC
}
\keywords{A, B, C}

\begin{document}
\thispagestyle{empty} \maketitle 

\thispagestyle{empty} 



\thispagestyle{empty} 
\tableofcontents

\listoffigures
\lstlistoflistings

\pagenumbering{arabic}

\section{Foo Section}

\textcite{aksin}


\begin{figure}
\caption{A figure}
\end{figure}

\begin{lstlisting}[caption={A listing}]
Some Fancy Code
\end{lstlisting}




\section{This is the appendix}
\printbibliography

\end{document}

代码输出

相关内容