Personalisasi (tikz) subfigur caption

Sep 07 2020

Saya ingin memiliki keterangan subfigur saya yang tidak hanya menunjukkan penghitung subfigur saat ini, tetapi juga nomor gambar saat ini. Jadi, misalnya, subfigur 1amemiliki teks 1.a - Caption. Saya berhasil melakukannya dengan mengubah \thesubfigureperintah, tetapi kemudian saya mengalami dua masalah (berikut MWE):

  1. Jika saya meletakkan caption gambar di bawah gambar (yang ingin saya lakukan), penghitung gambar belum diperbarui ketika subfigure caption dikompilasi. Mengubah penghitung secara manual tidak berfungsi, karena dalam hal ini judul Gambar akan memiliki nomor yang salah. (Dan saya tidak ingin mengubahnya dua kali setiap kali)

  2. Ketika saya mereferensikan subfigur, penghitung angka diulang dua kali.

Mengenai masalah kedua, saya menemukan pertanyaan ini dan saya membayangkan saya bisa mengubah sesuatu seperti \p@subfiguremenjadi hanya untuk ditampilkan \thesubfigure, tetapi itu akan memberi saya referensi \thefigure.\thesubfigure, sementara saya ingin merujuk subfigur sebagai 1agantinya 1.a.

Tentang masalah pertama, solusi terdekat yang dapat saya temukan adalah pertanyaan ini , tetapi saya tidak ingin menambahkan setiap nomor secara manual, karena saya memiliki banyak angka seperti ini di dokumen saya. Saya tahu ini ada hubungannya dengan apa yang dijelaskan di sini , tetapi jika saya meletakkan gambar di \captiondepan sub-gambar, posisi keterangan bergerak ke atas.

Sebagai tambahan, semua tips tentang cara mengganti labelsepcaption subfigur -menjadi sangat kami hargai.

INFO: Cara saya menambahkan teks subfigur untuk masing tikzpicture- masing terinspirasi oleh pertanyaan ini .

\documentclass{article}
\usepackage{fullpage}
\usepackage{amsbsy, amscd, amsfonts, amssymb, amstext, amsmath, mathtools, amsthm} 
\usepackage{float, tikz, hyperref}
\usepackage{caption, subcaption}

\renewcommand{\thesubfigure}{\thefigure.\alph{subfigure}}
\captionsetup[subfigure]{labelfont=bf,labelformat=simple, labelsep=space}

\begin{document}

\begin{figure}[H]
\centering
 \begin{tikzpicture}
      \shade[ball color = gray!40, opacity = 0.4] (0,0) circle (2cm);
      \draw (0,0) circle (2cm);
      \node (c) at (-90:2) {};
      \node[text width=6cm,align=center,anchor=north] at ([yshift=-5mm]c.south) {\captionof{subfigure}{Sphere \label{subfig1}}};
 \end{tikzpicture}
%
 \begin{tikzpicture}
        \draw[black!80,thick,dashed] (2,2) circle (2cm);
        \begin{scope}[shift={(2,2)}]
            \node (c) at (-90:2) {};
        \end{scope}    
        \node[text width=6cm,align=center,anchor=north] at ([yshift=-5mm]c.south) {\captionof{subfigure}{Above view \label{subfig2}}};
 \end{tikzpicture}
\caption{A sphere in $\mathbb{R}^3$}
\label{fig}
\end{figure}

Reference: \ref{subfig1} . It should show 1a.

\end{document}

Jawaban

1 P.M. Sep 12 2020 at 12:18
  1. Dokumen contoh tidak dapat dikompilasi di komputer saya karena \captionof{subfigure}. Jadi saya mengubahnya menjadi \subcaption. (Berdasarkanhttps://tex.stackexchange.com/a/310400/205700 \captionof{subfigure}salah. Saya rasa itu sebabnya Anda mengalami masalah dengan figurepenghitung untuk sub-teks.)
  2. Jika titik seharusnya hanya muncul di teks, tetapi tidak di referensi, seseorang perlu menentukan format label teks tambahan, misalnya:
\DeclareCaptionLabelFormat{subfigure}{\thefigure.#2}
\captionsetup[subfigure]{labelformat=subfigure}

Hal ini membuat skema penomoran, referensi, dll. Tetap utuh dan hanya mengubah tampilan sub-teks pada gambar.

Dokumen lengkap, termasuk dua perubahan di atas:

\documentclass{article}
\usepackage{fullpage}
\usepackage{amsbsy, amscd, amsfonts, amssymb, amstext, amsmath, mathtools, amsthm}
\usepackage{float, tikz, hyperref}
\usepackage{caption, subcaption}

\DeclareCaptionLabelFormat{subfigure}{\thefigure.#2}
\captionsetup[subfigure]{labelfont=bf,labelformat=subfigure,labelsep=space}

\begin{document}

\begin{figure}[H]
\centering
 \begin{tikzpicture}
      \shade[ball color = gray!40, opacity = 0.4] (0,0) circle (2cm);
      \draw (0,0) circle (2cm);
      \node (c) at (-90:2) {};
      \node[text width=6cm,align=center,anchor=north] at ([yshift=-5mm]c.south) {\subcaption{Sphere \label{subfig1}}};
 \end{tikzpicture}
%
 \begin{tikzpicture}
        \draw[black!80,thick,dashed] (2,2) circle (2cm);
        \begin{scope}[shift={(2,2)}]
            \node (c) at (-90:2) {};
        \end{scope}
        \node[text width=6cm,align=center,anchor=north] at ([yshift=-5mm]c.south) {\subcaption{Above view \label{subfig2}}};
 \end{tikzpicture}
\caption{A sphere in $\mathbb{R}^3$}
\label{fig}
\end{figure}

Reference: \ref{subfig1} . It should show 1a.

\end{document}
1 Zarko Oct 12 2020 at 13:36

Dengan menggunakan subcaption(yang sudah Anda muat):

\documentclass{article}
\usepackage{fullpage}
\usepackage{amssymb, mathtools}
\usepackage{caption, subcaption}
\usepackage{tikz}

\usepackage{hyperref}

\begin{document}
\section{Test}
\begin{figure}[ht]
\centering
    \begin{subfigure}{0.45\linewidth}
    \centering
 \begin{tikzpicture}
      \shade[ball color = gray!40, opacity = 0.4] (0,0) circle (2cm);
      \draw (0,0) circle (2cm);
      \node (c) at (-90:2) {};
\end{tikzpicture}
\caption{Sphere}
\label{subfig1}
    \end{subfigure}
    \hfil
    \begin{subfigure}{0.45\linewidth}
    \centering
 \begin{tikzpicture}
        \draw[black!80,thick,dashed] (2,2) circle (2cm);
        \begin{scope}[shift={(2,2)}]
            \node (c) at (-90:2) {};
        \end{scope}
\end{tikzpicture}
    \caption{Above view};
     \label{subfig2}
\end{subfigure}
    \caption{A sphere in $\mathbb{R}^3$}
    \label{fig}
\end{figure}

Reference: \ref{subfig1} . It should show 1a.
\end{document}

Catatan : paket hyperref(dengan pengecualian yang jarang terjadi cleveref) harus dimuat terakhir dalam pembukaan.