Estoy intentando establecer una etiqueta en una macro (?) que creé con un nuevo comando. Estoy pasando varios valores al comando en el primer argumento a través de pgfkeys, pero la \label
macro solo usa la cadena literal que ingresé para expandir pgfkey en lugar del valor expandido real.
Probé las dos soluciones presentadas en estas respuestas, juntas y por separado, pero no tuve suerte.
https://tex.stackexchange.com/a/308164
https://tex.stackexchange.com/a/125099
Tengo una sospecha de que lo que está sucediendo está relacionado con el momento de la expansión del valor pgfkey, pero seré honesto, no tengo una comprensión firme de cómo el motor tex subyacente hace su magia. También estoy aprendiendo pgfkeys, por lo que mi comprensión de lo que sucede allí todavía es de nivel principiante.
Aquí está mi mwe de lo que estoy tratando de hacer:
\documentclass[twocolumn]{book}
\usepackage[framemethod=TikZ]{mdframed}%boxes
\usepackage{pgfkeys}
\newcounter{myCounter}
\newmdenv[%
frametitlebackgroundcolor=blue,
frametitlefontcolor=white,
backgroundcolor=blue!25,
linecolor=blue,
outerlinewidth=1pt,
roundcorner=1mm,
skipabove=\baselineskip,
skipbelow=\baselineskip,
font=\small,
nobreak=true,
settings={\global\refstepcounter{myCounter}},
]{myTextBox}
%Define Macros
\makeatletter
\pgfkeys{/mykeys/textbox/.cd,
title/.initial=,
body/.initial=,
label/.initial=,
}
\def\mykeys@set@textbox@keys#1{%%
\pgfkeys{/mykeys/textbox/.cd,#1}}
\def\mykeys@get@textbox#1{%%
\pgfkeysvalueof{/mykeys/textbox/#1}}
\newcommand\myBox[1]{%%
\bgroup
\mykeys@set@textbox@keys{#1}%%
\begin{myTextBox}[frametitle=\textbf{\mykeys@get@textbox{title}\hfill NOTE}]
\mykeys@get@textbox{body}
\label{box:\mykeys@get@textbox{label}}
\end{myTextBox}
\egroup
}
\makeatother
\begin{document}
\section{A Section}
\myBox{
title=Box Title,
body=A not so long string of text to go in the box,
label=firstbox
}
\ref{firstbox}
\end{document}
Aquí está mi resultado actual:
No estoy atado a una solución en particular (preferiría una solución que funcione con pgfkeys) siempre que pueda hacer que las etiquetas y referencias funcionen correctamente.