我在用着floatrow
创建一个新环境Quadros
(即框架),但尽管在标题中显示了正确的分隔符,但 Quadros 列表仍然显示空白。只需要在浮点数后添加一个尾号。我确实搜索了类似问题但找不到任何可以解决我的问题的东西。
编辑2:为了跟上我的论文布局,我将 C. Hupfer 解决方案融入其中:
\DeclareCaptionListFormat{quadro}{\llap{{#1}}{#2}\hfill\rlap{\textendash}\hfill\hspace{0.5em}}
显示内容与图形的默认列表完全相同,除了一个或两个像素之外,但这可能是由于微类型或仅仅是不同的字符造成的。
编辑:C. Hupfer 的当前解决方案:
\makeatletter
\renewcommand*{\l@quadro}{\@dottedtocline{1}{1.5em}{1.7em}}
\makeatother
导致我遇到两位数浮点数的问题:
\hspace{0.15em}
我尝试在之前添加一个\textendash
,但也无法正常工作。
这是我的 MWE:
\documentclass{memoir}
\usepackage[T1]{fontenc}
\let\newfloat\relax % % % % % % % % % % % % % % % % % % % % % %
\let\tmp\newinsert %
\let\newinsert\newbox % This is to fix some bug of floatrow
\usepackage{floatrow} %
\let\newinsert\tmp % % % % % % % % % % % % % % % % % % % % % %
\floatsetup{objectset=centering,capposition=top}
\usepackage{caption}
\DeclareNewFloatType{quadro}{placement=p,fileext=frm,name=Quadro}
\newcommand*{\quadroautorefname}{quadro}
\captionsetup[quadro]{
name=Quadro,
justification=justified,
position=above,
skip=\onelineskip,
width=0.95\linewidth,
labelsep=endash, %% ABNT thing requires to use dash
labelfont={small},
font={footnotesize},
}
\begin{document}
\begingroup
\let\oldnumberline\numberline
\renewcommand{\numberline}{Quadro~\oldnumberline}
\listof{quadro}{ Lista de Quadros}
\endgroup
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}\label{quad:b}
content...
\end{quadro}
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}\label{quad:b}
content...
\end{quadro}
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}\label{quad:b}
content...
\end{quadro}
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}\label{quad:b}
content...
\end{quadro}
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}\label{quad:b}
content...
\end{quadro}
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\end{document}
答案1
安装程序包list-of
中内置了对特殊格式的支持caption
\DeclareCaptionListFormat{quadro}{#1\textendash\ #2}
并listformat=quadro
使用\captionsetup
。
名称quadro
是任意的(只要它不是figure
等)
由于四位数后的间距可能太宽,因此\l@quadro
必须重新定义宏。
\makeatletter
\renewcommand*{\l@quadro}{\@dottedtocline{1}{1.5em}{1.7em}}
\makeatother
最后一个参数(带有 的参数1.7em
)包含numwidth
,即数字部分的宽度。通常,这是2.3em
,我将其缩小为1.7em
。
\documentclass{memoir}
\usepackage[T1]{fontenc}
\let\newfloat\relax % % % % % % % % % % % % % % % % % % % % % %
% \let\tmp\newinsert %
% \let\newinsert\newbox % This is to fix some bug of floatrow
\usepackage{floatrow} %
% \let\newinsert\tmp % % % % % % % % % % % % % % % % % % % % % %
\floatsetup{objectset=centering,capposition=top}
\usepackage{caption}
\DeclareNewFloatType{quadro}{placement=p,fileext=frm,name=Quadro}
\DeclareCaptionListFormat{quadro}{#1#2 \textendash}
\newcommand*{\quadroautorefname}{quadro}
\captionsetup[quadro]{
name=Quadro,
justification=justified,
position=above,
skip=\onelineskip,
width=0.95\linewidth,
labelsep=endash, %% ABNT thing requires to use dash
labelfont={small},
font={footnotesize},
listformat=quadro
}
\begin{document}
\begingroup
\let\oldnumberline\numberline
\makeatletter
\renewcommand*{\l@quadro}{\@dottedtocline{1}{1.5em}{1.7em}}
\makeatother
\renewcommand{\numberline}{Quadro~\oldnumberline}
\listof{quadro}{ Lista de Quadros}
\endgroup
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}\label{quad:b}
content...
\end{quadro}
\end{document}
更新
\llap
我在列表格式的定义中添加了一条语句。 那么\renewcommand{\l@quadro}
... 就不再是必要的了,因为将 quadro 数字与右边界对齐需要比 更多的水平间距1.7em
。
\documentclass{memoir}
\usepackage[T1]{fontenc}
\let\newfloat\relax % % % % % % % % % % % % % % % % % % % % % %
\usepackage{floatrow} %
\floatsetup{objectset=centering,capposition=top}
\usepackage{caption}
\DeclareNewFloatType{quadro}{placement=p,fileext=frm,name=Quadro}
\DeclareCaptionListFormat{quadro}{\hfill#1\hfill\llap{#2}\hfill\textendash\hfill}
\newcommand*{\quadroautorefname}{quadro}
\captionsetup[quadro]{
name=Quadro,
justification=justified,
position=above,
skip=\onelineskip,
width=0.95\linewidth,
labelsep=endash, %% ABNT thing requires to use dash
labelfont={small},
font={footnotesize},
listformat=quadro
}
\begin{document}
\begingroup
\let\oldnumberline\numberline
\makeatletter
%\renewcommand*{\l@quadro}{\@dottedtocline{1}{1.5em}{2.7em}}
\makeatother
\renewcommand{\numberline}{Quadro~\oldnumberline}
\listof{quadro}{ Lista de Quadros}
\endgroup
\begin{quadro}
\caption{aaa}\label{quad:a}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\begin{quadro}
\caption{bbb}%\label{quad:\x}
content...
\end{quadro}
\end{document}