引用子图

引用子图

我正在使用subfigure一些图像。为了在文本中引用它们,我使用命令\autoref{fig:test}。但这并不重要,问题与\ref命令相同。

为了缩短我使用的名称:\addto\extrasngerman{\def\figureautorefname{Abb.}}并使用阿拉伯数字代替字符:\renewcommand*\thesubfigure{\arabic{subfigure}}

问题(仍然没有上述修改):它引用了

11

,但我希望它被称为

1.1

梅威瑟:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[hidelinks]{hyperref}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\addto\extrasngerman{\def\figureautorefname{Abb.}}
\renewcommand*\thesubfigure{\arabic{subfigure}}
\begin{document}
\section{Test}
Hello. This is some text. I'm referring to a the test image (\autoref{fig:Test1}). Or to the second image with the ref command (Abb. \ref{fig:Test2}). What I want to have: (Abb. 1.2)

\begin{figure}[h]
        \centering
        \begin{subfigure}[b]{0.3\textwidth}
                \includegraphics[width=\textwidth]{bmp0_test_image.png}
                \caption{TestCaption1}
                \label{fig:Test1}
        \end{subfigure}%
        ~
        \begin{subfigure}[b]{0.3\textwidth}
                \includegraphics[width=\textwidth]{bmp0_test_image.png}
                \caption{TestCaption2}
                \label{fig:Test2}
        \end{subfigure}
        \caption{Test-Figure}\label{fig:TestFigure}
\end{figure}
\end{document}

输出

答案1

  • 如果你想让字幕显示为(1.1)测试标题1, 添加

    \DeclareCaptionSubType*[arabic]{figure}
    

    到序言部分,删除对的修改\thesubfigure,即将其\addto改为

    \addto\extrasngerman{\def\figureautorefname{Abb.}}
    
  • 如果你想保留字幕(1)测试标题1,在序言部分添加以下内容:

    \makeatletter
    \renewcommand\p@subfigure{\thefigure.}
    \makeatother
    

    据我所知,对子图的引用包括\p@subfigure\thesubfigure。通过重新定义前者以包含句点,该句点包含在引用中。

完整示例,第一个选项被注释:

在此处输入图片描述

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[hidelinks]{hyperref}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

%% OPTION 1
%\DeclareCaptionSubType*[arabic]{figure}
%\addto\extrasngerman{\def\figureautorefname{Abb.}}

%% OPTION 2
\addto\extrasngerman{\def\figureautorefname{Abb.}}
\renewcommand*\thesubfigure{\arabic{subfigure}}
\makeatletter
\renewcommand\p@subfigure{\thefigure.}
\makeatother

\begin{document}
\section{Test}
Hello. This is some text. I'm referring to a the test image (\autoref{fig:Test1}). Or to the second image with the ref command (Abb. \ref{fig:Test2}). What I want to have: (Abb.~1.2)

\begin{figure}[h]
        \centering
        \begin{subfigure}[b]{0.3\textwidth}
                \includegraphics[width=\textwidth]{example-image-a}
                \caption{TestCaption1}
                \label{fig:Test1}
        \end{subfigure}%
        ~
        \begin{subfigure}[b]{0.3\textwidth}
                \includegraphics[width=\textwidth]{example-image-b}
                \caption{TestCaption2}
                \label{fig:Test2}
        \end{subfigure}
        \caption{Test-Figure}\label{fig:TestFigure}
\end{figure}
\end{document}

答案2

检查是否不需要将您的更改\renewcommand*\thesubfigure{\arabic{subfigure}}为类似的东西\renewcommand*\thesubfigure{.\arabic{subfigure}},带有明确的点。对我有用。

在另一个主题中,我会把\label{} 里面因此\caption{}LaTeX 知道这个标签用于:

\begin{figure}[h]
        \centering
        \begin{subfigure}[b]{0.3\textwidth}
                \includegraphics[width=\textwidth]{bmp0_test_image.png}
                \caption{\label{fig:Test1}TestCaption1}
        \end{subfigure}%
        ~
        \begin{subfigure}[b]{0.3\textwidth}
                \includegraphics[width=\textwidth]{bmp0_test_image.png}
                \caption{\label{fig:Test2}TestCaption2}
        \end{subfigure}
        \caption{\label{fig:TestFigure}Test-Figure}
\end{figure}

相关内容