%D0%BC%D0%B5%D1%82%D0%BE%D0%BA%20(%D0%B7%D0%B4%D0%B5%D1%81%D1%8C%20%D0%B4%D0%BB%D1%8F%20tcolorbox%2C%20%D0%BF%D0%BE%D1%85%D0%BE%D0%B6%D0%B5%D0%B3%D0%BE%20%D0%BD%D0%B0%20%D0%BF%D0%BE%D0%B4%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA).png)
По причинамплавающие элементы не могут быть вложены в tcolorboxи я хочу, чтобы моя (под)фигура была более нарядной, я закодировал новые Figure
и Subfigure
newtcolorbox среды. Вот упрощенная версия моего кода
\documentclass[12pt,a4paper]{book}
\usepackage{lipsum}
\usepackage[skins, breakable]{tcolorbox}
\newcommand{\figref}[1]{Figure \ref{fig:#1}}
\newtcolorbox[auto counter]{Figure}[1]{
title = {Figure~\thetcbcounter~$-$ #1}
}
\newtcolorbox[
auto counter,
number within=tcb@cnt@Figure,
number freestyle = {(\noexpand\alph{\tcbcounter})}
]
{Subfigure}[3][]{
width = (\linewidth - 4\dimexpr (#2pt - 1pt)\relax)/#2,
before =,
after = \hfill,
box align = center,
title = {\thetcbcounter~#3},
#1
}
\begin{document}
\begin{Figure}
{Title figure}
\begin{Subfigure}[label={fig:a}]{2}
{Title again}
\lipsum[1]
\end{Subfigure}%
%
\begin{Subfigure}{2}
{A nice Subfigure}
\lipsum[2]
\end{Subfigure}
\end{Figure}
See \figref{a}.
\end{document}
с выходом
Мне нравится результат, но я бы хотел, чтобы текст печатался Figure 1a
вместо Figure (a)
и так без изменения заголовка подрисунка. Точнее, я мог бы изменить аргумент number freestyle
newtcolorbox, чтобы иметь 1a
в качестве счетчика моего подрисунка, но это изменило бы заголовок с (a) blabla
на 1a blabla
, что мне не нужно.
Обратите внимание, что я использую hyperref
package, даже если удалил его из своего минимального рабочего примера.
Я знаюаналогичный вопросбыл задан, но я не знаю, насколько он близок к моему вопросу, так как я не понимаю, о чем идет речь.
\makeatletter
\newcommand{\customlabel}[2]{%
\protected@write \@auxout {}{\string \newlabel {#1}{{#2}{}}}}
\makeatother
делается...
решение1
Вы можете изменить формат этикетки, используя \labelformat
(см.ltnews30.pdf
Чтобы получить больше информации):
\documentclass[12pt,a4paper]{book}
\usepackage{lipsum}
\usepackage[skins, breakable]{tcolorbox}
\newcommand{\figref}[1]{Figure \ref{fig:#1}}
\newtcolorbox[auto counter]{Figure}[1]{
title = {Figure~\thetcbcounter~$-$ #1}
}
\newtcolorbox[
auto counter,
number within=tcb@cnt@Figure,
number freestyle = {(\noexpand\alph{\tcbcounter})}
]
{Subfigure}[3][]{
width = (\linewidth - 4\dimexpr (#2pt - 1pt)\relax)/#2,
before =,
after = \hfill,
box align = center,
title = {\thetcbcounter~#3},
#1
}
\labelformat{tcb@cnt@Subfigure}{\arabic{tcb@cnt@Figure}\alph{tcb@cnt@Subfigure}}
\begin{document}
\begin{Figure}
{Title figure}
\begin{Subfigure}[label={fig:a}]{2}
{Title again}
\lipsum[1]
\end{Subfigure}%
%
\begin{Subfigure}{2}
{A nice Subfigure}
\lipsum[2]
\end{Subfigure}
\end{Figure}
See \figref{a}.
\end{document}
Кстати: я бы также предложил использовать cleveref
вместо определения своего собственного \figref
.