如何使用 \float 包创建的自定义浮点数列表以及使用自定义文档格式(如 abntex2)显示标签名称(来自巴西)

如何使用 \float 包创建的自定义浮点数列表以及使用自定义文档格式(如 abntex2)显示标签名称(来自巴西)

我正在格式化我的论文文档,但在自定义浮点列表方面遇到了一些问题。

我需要获取代表图表的自定义浮点数列表,以便打印它们的标签,如下例所示。

在此处输入图片描述

但是,我得到的格式如下所示。

在此处输入图片描述

我正在使用此命令通过“float”包创建新的浮点数:

\usepackage{float}
\newfloat{chart}{thp}{lochart}
\floatname{chart}{Chart}

此外,我还使用此命令来打印自定义列表:

\renewcommand{\figurename}{Chart}
\listof{chart}{List of charts}

我使用它是因为线程中的建议:经典论文中自定义浮点数的格式化列表

我的主要问题是 LaTeX 不易于使用,并且软件包提供了许多模糊的命令,人们认为这些命令在创建东西时会有所帮助。

关键是,我尝试过的所有软件包都过于复杂,难以使用,而且通常会重命名基本命令或命令序列。因此,当您尝试使用基本 LaTeX 命令和界面更改简单内容时,如果您还在学习如何正确自定义它(就像我一样),这似乎是不可能的。

尽管如此,我也尝试手动创建自定义列表。

我感谢您的任何帮助。

答案1

如果你浏览过该项目网站,你会发现 Wiki 中有一个特定的条目:

https://github.com/abntex/abntex2/wiki/HowToCriarNovoAmbienteListing

% Novo list of (listings) para QUADROS

\newcommand{\quadroname}{Quadro}
\newcommand{\listofquadrosname}{Lista de quadros}

\newfloat[chapter]{quadro}{loq}{\quadroname}
\newlistof{listofquadros}{loq}{\listofquadrosname}
\newlistentry{quadro}{loq}{0}

% configurações para atender às regras da ABNT
\counterwithout{quadro}{chapter}
\renewcommand{\cftquadroname}{\quadroname\space} 
\renewcommand*{\cftquadroaftersnum}{\hfill--\hfill}

% Configuração de posicionamento padrão:
\setfloatlocations{quadro}{hbtp}

想要 MWE 吗?

\documentclass{abntex2}

% Novo list of (listings) para QUADROS

    \newcommand{\quadroname}{Quadro}
    \newcommand{\listofquadrosname}{Lista de quadros}

    \newfloat[chapter]{quadro}{loq}{\quadroname}
    \newlistof{listofquadros}{loq}{\listofquadrosname}
    \newlistentry{quadro}{loq}{0}

    % configurações para atender às regras da ABNT
    \counterwithout{quadro}{chapter}
    \renewcommand{\cftquadroname}{\quadroname\space} 
    \renewcommand*{\cftquadroaftersnum}{\hfill--\hfill}

    % Configuração de posicionamento padrão:
    \setfloatlocations{quadro}{hbtp}


\begin{document}

\listofquadros*

\begin{quadro}
\caption{Um quadro qualquer}
\begin{tabular}{|ccc|}
\hline
a & b & c\\
a & b & c\\
a & b & c\\
a & b & c\\
\hline
\end{tabular}
\end{quadro}

\end{document}

答案2

处理列表、自定义列表和自定义浮点数可能很麻烦,因为我认为对于像我这样的初学者来说,LaTex 语法并不像其他一些主流语言那样简单或容易阅读和理解。

根据@Joseph 和@Christian 的说法,这个问题可以通过创建自定义环境甚至更改一些标题选项来解决,他们说得很对。但是,@Joseph 提供的语法(可在https://github.com/abntex/abntex2/wiki/HowToCriarNovoAmbienteListing,第一次尝试没有成功。

所以我想分享我的经验,以帮助那些遇到类似问题的人。请记住,主要问题是打印“列表”内容时不会显示标签,如下所示。

在此处输入图片描述

为了解决这个问题,打印标签及其正确的计数器值,我尝试了两种方法,都成功解决了问题。

在应用任何解决方案之前,您应该知道我假设您想创建一个自定义浮点数并正确显示它、它的标题和列表名称。

为了使其工作,需要使用 de 命令创建自定义浮点数:

\usepackage{float}
\newfloat{chart}{}{locharts}  
\floatname{chart}{Chart}

第一个将导入你的浮点包,第二个将创建一个名为的新浮点包'图表',第一个参数,它会将其存储在名为‘locharts’,最后一个参数。中间{}负责浮点格式选项。对于此示例,您可以将其留空,因为我现在不需要任何特殊选项。最后,该命令\floatname只是定义应该调用最近创建的浮点数'图表'大写字母。

创建自定义浮点数后,您可以使用我在此处提供的两种方法来在显示列表时更改标签名称。

对于第一种方法,您应该使用下面的代码。

%CREATE A NEW COMMAND TO HOLD THE LIST FILE NAME SO YOU CAN HANDLE AND MODIFY IT
\newcommand{\listofchartsname}{List of charts}

%CREATE THE LIST
\newlistof{listofcharts}{locharts}{\listofchartsname}

%INSERT AN ENTRY
\newlistentry{chart}{locharts}{0}

%CHANGE THE LIST DISPLAY NAMES
\counterwithout{chart}{chapter}

%CHANGE HOW THINGS WILL BE PRINTED
\renewcommand{\cftchartname}{Chart\space} 
\renewcommand*{\cftchartaftersnum}{\hfill--\hfill}

我认为这里重要的是你正在创建一个命令来\newcommand{\listofchartsname}{List of charts}保存一个名为的变量名'图表列表'。然后使用该变量通过命令为您的列表命名\newlistof{listofcharts}{locharts}{\listofchartsname}。之后,\counterwithout{chart}{chapter}用于指定在增加浮点计数器时不计算章节。

第一种方法的诀窍最终通过实现\renewcommand{\cftchartname}{Chart\space}\renewcommand{\cftchartaftersnum}{\hfill--\hfill}这将保持'图表\空间'\hfill--\hfill命令。打印您创建的列表时都会调用这两个命令

\newlistof{listofcharts}{locharts}{\listofchartsname}

使用此方法操作、创建自定义浮点的结果如下图所示

在此处输入图片描述

这是通过调用生成的

\pdfbookmark[0]{\listofchartsname}{locharts}
\listofcharts*

不同的是,第二种方法基于标题选项,正如@Christian 所建议的那样。在开始之前,我想分享这个链接:https://mirror.hmc.edu/ctan/macros/latex/contrib/caption/caption-eng.pdf. 这是'标题'该包描述了如何自定义标题以及列出选项的方法。

为了使用第二种方法,你只需要使用代码

\usepackage[labelfont=bf, textfont=bf]{caption}
\DeclareCaptionListFormat{chartListFormat}{\hspace*{-30.5pt}Chart #2~--~}
\captionsetup[chart]{listformat=chartListFormat}

在此示例中,命令\usepackage[labelfont=bf, textfont=bf]{caption}是导入包'标题',以便轻松处理它们。选项'标签字体=bf''文本字体=bf'只是指定所有标题标签和计数器的两种字体都应以粗体打印。

为了改变列表时标签的显示方式,你需要使用选项更改标题列表格式‘列表格式’。在许多方法中,这可以通过使用命令创建自定义列表格式来实现\DeclareCaptionListFormat{chartListFormat}{\hspace*{-30.5pt}Chart #2~--~},其中‘chartListFormat’是它的名字,\hspace*{-30.5pt}留出一些空间以避免事物重叠,并且“图表 #2~-~”是一个字符串,表示它应该打印名称 Chart,后跟参数 #2,指示列表中一个浮点数的当前计数器值(此命令针对创建的浮点数列表中的每个元素调用)。

要设置该选项,\captionsetup[chart]{listformat=chartListFormat}可以使用该命令并指定选项'列表格式=图表列表格式'对于自定义浮点数'图表'已创建。此方法将生成如下所示的列表。

在此处输入图片描述

这是通过调用生成的

\listof{chart}{Charts list}

我希望这些方法可以帮助到你们,你们在配置自定义打印字幕或配置字幕时遇到了麻烦。我还想分享这个链接:http://www.peteryu.ca/tutorials/publishing/latex_captions。它包含一些有关如何自定义字幕的很好的例子。

相关内容