Cá nhân hóa (tikz) phụ đề

Sep 07 2020

Tôi muốn chú thích của các cấu hình con của mình không chỉ hiển thị bộ đếm cấu hình con hiện tại mà còn hiển thị số lượng hình hiện tại. Vì vậy, ví dụ, cấu hình con 1asẽ có chú thích 1.a - Caption. Tôi đã quản lý để làm điều đó bằng cách thay đổi \thesubfigurelệnh, nhưng sau đó tôi gặp phải hai vấn đề (MWE sau):

  1. Nếu tôi đặt chú thích hình bên dưới các số liệu (mà tôi muốn thực hiện), thì bộ đếm hình vẫn chưa được cập nhật khi phụ đề cấu hình được biên dịch. Thay đổi bộ đếm theo cách thủ công không hoạt động, vì trong trường hợp đó chú thích Hình sẽ có số sai. (Và tôi không muốn thay đổi nó hai lần mỗi lần)

  2. Khi tôi tham chiếu đến một cấu hình con, bộ đếm số liệu được lặp lại hai lần.

Về vấn đề thứ hai, tôi tìm thấy câu hỏi này và tôi tưởng tượng tôi có thể thay đổi một cái gì đó như \p@subfigurechỉ hiển thị \thesubfigure, nhưng điều đó sẽ cung cấp cho tôi tài liệu tham khảo \thefigure.\thesubfigure, trong khi tôi muốn tham chiếu đến các cấu hình con 1athay vì 1.a.

Về vấn đề đầu tiên, câu hỏi gần nhất mà tôi có thể tìm ra giải pháp là câu hỏi này , nhưng tôi không muốn thêm từng số theo cách thủ công, vì tôi có nhiều số liệu như thế này trong tài liệu của mình. Tôi biết điều này liên quan đến những gì được giải thích ở đây , nhưng nếu tôi đặt con số \captiontrước các hình phụ, vị trí phụ đề sẽ di chuyển lên trên cùng.

Ngoài ra, bất kỳ mẹo nào về cách thay đổi labelsepchú thích của cấu hình phụ thành -sẽ được đánh giá cao.

THÔNG TIN: Cách tôi thêm phụ đề cho từng cấu hình tikzpictuređược lấy cảm hứng từ câu hỏi này .

\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}

Trả lời

1 P.M. Sep 12 2020 at 12:18
  1. Tài liệu ví dụ không biên dịch trên máy tính của tôi vì \captionof{subfigure}. Vì vậy, tôi đã thay đổi chúng thành \subcaption. (Dựa theohttps://tex.stackexchange.com/a/310400/205700 \captionof{subfigure}là không chính xác. Tôi đoán đó là lý do tại sao bạn gặp sự cố với bộ figuređếm phụ đề.)
  2. Nếu dấu chấm chỉ nên xuất hiện trong chú thích, nhưng không xuất hiện trong tham chiếu, người ta cần xác định một định dạng nhãn phụ đề bổ sung, ví dụ:
\DeclareCaptionLabelFormat{subfigure}{\thefigure.#2}
\captionsetup[subfigure]{labelformat=subfigure}

Điều này giữ nguyên sơ đồ đánh số, tài liệu tham khảo, v.v. và chỉ thay đổi hình thức của phụ đề trong các hình.

Toàn bộ tài liệu, bao gồm hai thay đổi ở trên:

\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

Với việc sử dụng subcaption(mà bạn đã tải):

\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}

Lưu ý : gói hyperref(với ngoại lệ hiếm khi xảy ra cleveref) phải được tải cuối cùng trong phần mở đầu.