コマンドを使用してフロートを参照すると\cref
、誤ったタイプ設定が生成される場合があります。これは、サブフロートが含まれている場合に特に当てはまります。
一例として、 float 1 に 2 つのサブフロートがある場合、範囲は1a and 2 to 5
からであるかのように誤解されます1a to 5
。また、 と の両方1a
が1b
ソース コード参照に含まれている場合、ソース コードに含まれているサブフロートの 1 つだけではなく、すべてを参照する必要があります (ポイント 2 を参照)。タイプセット出力を以下に示します。
この出力は、次のソース コードを使用して生成されます。
\documentclass[twocolumn]{report}
\usepackage{float}
\usepackage{subfloat}
\usepackage{caption}
\usepackage{cleveref}
\usepackage{paralist}
\begin{document}
\begin{subfigures}
% Subfigure 1
\begin{figure}[H]
\centering
\fbox{\Huge Figure 1a}
\caption{Caption 1}
\label{fig1a}
\end{figure}
% Subfigure 2
\begin{figure}[H]
\centering
\fbox{\Huge Figure 1b}
\caption{Caption 1b}
\label{fig1b}
\end{figure}
\end{subfigures}
% Figure 2
\begin{figure}[H]
\centering
\fbox{\Huge Figure 2}
\caption{Caption 2}
\label{fig2}
\end{figure}
% Figure 3
\begin{figure}[H]
\centering
\fbox{\Huge Figure 3}
\caption{Caption 3}
\label{fig3}
\end{figure}
% Figure 4
\begin{figure}[H]
\centering
\fbox{\Huge Figure 4}
\caption{Caption 4}
\label{fig4}
\end{figure}
% Figure 5
\begin{figure}[H]
\centering
\fbox{\Huge Figure 5}
\caption{Caption 5}
\label{fig5}
\end{figure}
% Figure 6
\begin{figure}[H]
\centering
\fbox{\Huge Figure 6}
\caption{Caption 6}
\label{fig6}
\end{figure}
\newpage
Figures are correctly cited for different citation formats such as:
\begin{enumerate}
\item Multiple: \textbf{\cref{fig5,,fig3,,fig4,,fig2}}
\item Range: \textbf{\cref{fig5,fig3,fig4}}
\item Multiple and range: \textbf{\cref{fig2,fig4,fig3,fig6}}
\end{enumerate}
\vspace{5mm}
But once subfigures are included, some citations formats do not work:
\begin{enumerate}
\item Multiple (works): \textbf{\cref{fig3,,fig4,,fig2,,fig1a}}
\item Range: \textbf{\cref{fig1a,fig1b,fig5,fig3,fig4}} (the output should be \textbf{figs. 1a to 1b and 3 to 5})
\item Multiple and range: \textbf{\cref{fig1a,fig2,fig4,fig3,fig6}} (the output should be \textbf{figs. 1a, 2 to 4 and 6})
\end{enumerate}
\end{document}
問題を軽減する解決策はすでにありますが、上記と同じ期待される出力は得られません。
答え1
新しい浮動小数点型(subfig
)を定義することができますcleveref
\crefformat{subfig}{fig. #1}
\crefrangeformat{subfig}{figs. #1 to #2}
\crefmultiformat{subfig}{figs. #1}{ and #1}{, #1}{ and #1}
\crefrangemultiformat{subfig}{figs. #1 to #2}{}{}{}
次に、プリアンブルで新しいコマンドを定義します。
\newcommand{\labelsf}[1]{ \label[subfig]{#1} } % a new command for labeling subfigures
labelsf
サブ図にラベルを付けるために使用できるようになりました。
完全なソースコードを以下に示します。
\documentclass[twocolumn]{report}
\usepackage{float}
\usepackage{subfloat}
\usepackage{caption}
\usepackage{paralist}
\usepackage{cleveref}
\crefformat{subfig}{fig. #1}
\crefrangeformat{subfig}{figs. #1 to #2}
\crefmultiformat{subfig}{figs. #1}{ and #1}{, #1}{ and #1}
\crefrangemultiformat{subfig}{figs. #1 to #2}{}{}{}
\newcommand{\labelsf}[1]{ \label[subfig]{#1} } % a new command for labeling subfigures
\begin{document}
\begin{subfigures}
% Subfigure 1
\begin{figure}[H]
\centering
\fbox{\Huge Figure 1a}
\caption{Caption 1}
\labelsf{fig1a}
\end{figure}
% Subfigure 2
\begin{figure}[H]
\centering
\fbox{\Huge Figure 1b}
\caption{Caption 1b}
\labelsf{fig1b}
\end{figure}
\end{subfigures}
% Figure 2
\begin{figure}[H]
\centering
\fbox{\Huge Figure 2}
\caption{Caption 2}
\label{fig2}
\end{figure}
% Figure 3
\begin{figure}[H]
\centering
\fbox{\Huge Figure 3}
\caption{Caption 3}
\label{fig3}
\end{figure}
% Figure 4
\begin{figure}[H]
\centering
\fbox{\Huge Figure 4}
\caption{Caption 4}
\label{fig4}
\end{figure}
% Figure 5
\begin{figure}[H]
\centering
\fbox{\Huge Figure 5}
\caption{Caption 5}
\label{fig5}
\end{figure}
% Figure 6
\begin{figure}[H]
\centering
\fbox{\Huge Figure 6}
\caption{Caption 6}
\label{fig6}
\end{figure}
\newpage
Figures are correctly cited for different citation formats such as:
\begin{enumerate}
\item Multiple: \textbf{\cref{fig5,,fig3,,fig4,,fig2}}
\item Range: \textbf{\cref{fig5,fig3,fig4}}
\item Multiple and range: \textbf{\cref{fig2,fig4,fig3,fig6}}
\end{enumerate}
\vspace{5mm}
But once subfigures are included, some citations formats do not work:
\begin{enumerate}
\item Multiple (works): \textbf{\cref{fig3,,fig4,,fig2,,fig1a}}
\item Range: \textbf{\cref{fig1a,fig1b,fig5,fig3,fig4}} (the output should be \textbf{figs. 1a to 1b and 3 to 5})
\item Multiple and range: \textbf{\cref{fig1a,fig2,fig4,fig3,fig6}} (the output should be \textbf{figs. 1a, 2 to 4 and 6})
\end{enumerate}
\end{document}
cref
サブ図を正しく参照できるようになりましたが、このソリューションの欠点は次のとおりです。
- フロートのラベルをダブルクリックしてもフロートの使用法を見つけることはできません。また、ラベルをクリックしてもフロートのソースコードを見つけることはできません。
- フロートの名前は2回繰り返される場合があり、冗長である