声明标题,但不显示它

声明标题,但不显示它

根据我的问题这里\caption,我在 里面添加了 ,\wrapfigure表示侧边栏,以便以后可以使用 来引用它\nameref{name}。但是,我现在在侧边栏标题上方看到了标题:

在此处输入图片描述

有没有一种方法可以让我声明一个标题,但实际上不让它显示任何内容,除了能够通过 引导用户访问它之外没有其他原因\nameref

我想过改变我的环境以便它能\caption*{}输出侧边栏的标题,但是它却\ref{}不再能正确地获取它(而是获取当前章节)。

这是一个完整的例子:

\documentclass{book}

\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{hyperref}
\usepackage{color}

\newcommand{\dummy}{}

\newenvironment*{lsidebar}[2][0.5]
{
    \renewcommand{\dummy}{#1}

    \wrapfigure{l}{#1\textwidth}
        \caption{#2}
        \rule{#1\textwidth}{1pt}

        \rule{#1\textwidth}{18pt}

        \vspace{-18pt}
        \centerline{\textcolor{white}{#2}}

        \vspace{5pt}
        \footnotesize
        \leftskip=5pt
        \rightskip=5pt
        \setlength{\parskip}{0.2cm}
        \setlength{\parindent}{0pt}

}
{
        \leftskip=0pt
        \rightskip=0pt
        \setlength{\parindent}{0pt}
        \rule{\dummy\textwidth}{1pt}
        \rule[.19in]{\dummy\textwidth}{2.5pt}
    \endwrapfigure
}

\begin{document}

\chapter{First}
\label{ch:First}

\begin{lsidebar}{Example Sidebar}
    \label{sb:Example}

    An example sidebar.
\end{lsidebar}

Refer to sidebar \nameref*{sb:Example}.

\end{document}

显示的内容如下:

在此处输入图片描述

请注意侧边栏上方多余的“图 1.1:示例侧边栏”。

答案1

您可以更新保存计数器和名称引用的\@currentlabel和。然后插入一个来标记超级目标。这样或将跳转到正确的位置。\@currentlabelname\phantomsection\ref\nameref

在此处输入图片描述

\documentclass{book}

\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{hyperref}
\usepackage{color}

\newcommand{\dummy}{}

\makeatletter
\newenvironment*{lsidebar}[2][0.5]{%
  \renewcommand{\dummy}{#1}%
  \wrapfigure{l}{#1\textwidth}
    \renewcommand{\@currentlabel}{#2}% Update \ref marker
    \renewcommand{\@currentlabelname}{#2}% Update \nameref marker
    \phantomsection% Set hyper target
    \rule{#1\textwidth}{1pt}

    \rule{#1\textwidth}{18pt}

    \vspace{-18pt}
    \centerline{\textcolor{white}{#2}}

    \vspace{5pt}
    \footnotesize
    \leftskip=5pt
    \rightskip=5pt
    \setlength{\parskip}{0.2cm}
    \setlength{\parindent}{0pt}
  }
  {
    \leftskip=0pt
    \rightskip=0pt
    \setlength{\parindent}{0pt}
    \rule{\dummy\textwidth}{1pt}
    \rule[.19in]{\dummy\textwidth}{2.5pt}
  \endwrapfigure
}
\makeatother

\begin{document}

\chapter{First}

\begin{lsidebar}{Example Sidebar}
  \label{sb:Example}

  An example sidebar.
\end{lsidebar}

Refer to sidebar \nameref{sb:Example}.

\end{document}

相关内容