`float` 包与 `sidecap` 包配合不顺畅?

`float` 包与 `sidecap` 包配合不顺畅?

在尝试回答这个问题,我以为使用该包添加新的浮动环境会很容易float。但是,标题的标签格式不正确。

因为我正在创建一个想要用侧面标题标记的新浮点数,所以我深入研究了sidecap包并创建了一个新的环境来匹配新的浮点数。

以下是 MWE:

\documentclass{book}     

%% setting up new float
\usepackage{float}
\floatname{mySpecialFloat}{Special Float}
\newfloat{mySpecialFloat}{tbhp}{lst}[chapter]
\newcommand{\listofSpecialFloats}{\listof{mySpecialFloat}{List of Special Floats}}

%% setting up side captions
\usepackage[wide]{sidecap}                                      
\makeatletter
\@ifdefinable\SC@specialFloat@vpos{\def\SC@specialFloat@vpos{b}}
\newenvironment{SCspecialFloat}{\SC@float[\SC@specialFloat@vpos]{mySpecialFloat}}{\endSC@float}
\newenvironment{SCspecialFloat*}{\SC@dblfloat[\SC@specialFloat@vpos]{mySpecialFloat}}{\endSC@dblfloat}
\makeatother

%% setting up formatting for cpations
\usepackage
  [
    font=footnotesize,
    format=plain,
    labelfont={bf,sf},
    textfont={it},
    width=10pt
  ]{caption}

\usepackage{lipsum}
\pagestyle{empty}
\begin{document}
\listofSpecialFloats

\begin{mySpecialFloat}
  \centering
    Hello
  \caption[toc entry for hello]{Hello}
\end{mySpecialFloat}

\begin{SCspecialFloat}
\begin{minipage}[t]{\textwidth}
  \lipsum[1-2]
\end{minipage}
  \caption[toc entry for lipsum]{My caption content}
  \label{fig:src:01}
\end{SCspecialFloat}

\end{document}

产生

在此处输入图片描述

我觉得有趣的是,一切似乎都正常工作。列表命令知道我所有的特殊浮点数。唯一似乎不能正常工作的是侧边标题浮点数的标题标签。

我知道这可以通过 来实现newfloat,但我想知道这里发生了什么。为什么标签名称在sidecap环境中丢失了?

更新

float使用的命名约定和所期望的命名约定似乎存在冲突sidecap

如果我在设置标题的代码中添加以下行,似乎可以解决这个问题:

\@namedef{mySpecialFloatname}{Special Float}

答案1

软件包captionbundle 和软件包已经提供了此功能,因为如果加载了newfloat该软件包,它会自动定义一个 SC 变体:sidecap

\documentclass{book}     

%% setting up side captions
\usepackage[wide]{sidecap}                                      

%% setting up new float
\usepackage{newfloat}
\DeclareFloatingEnvironment
  [name={Special Float},listname={List of Special Floats},fileext=lst,placement=tbhp]
  {SpecialFloat}

%% setting up formatting for cpations
\usepackage
  [
    font=footnotesize,
    format=plain,
    labelfont={bf,sf},
    textfont={it},
    width=10pt
  ]{caption}

\usepackage{lipsum}
\pagestyle{empty}
\begin{document}
\listofSpecialFloats

\begin{SpecialFloat}
  \centering
    Hello
  \caption[toc entry for hello]{Hello}
\end{SpecialFloat}

\begin{SCSpecialFloat}
\begin{minipage}[t]{\textwidth}
  \lipsum[1-2]
\end{minipage}
  \caption[toc entry for lipsum]{My caption content}
  \label{fig:src:01}
\end{SCSpecialFloat}

\end{document}

相关内容