Ich versuche, in einem Makro(?), das ich mit einem neuen Befehl erstellt habe, eine Bezeichnung festzulegen. Ich übergebe dem Befehl im ersten Argument über pgfkeys mehrere Werte, aber das \label
Makro verwendet nur die Literalzeichenfolge, die ich eingegeben habe, um den pgfkey zu erweitern, anstatt den tatsächlich erweiterten Wert.
Ich habe beide in diesen Antworten vorgestellten Lösungen zusammen und einzeln ausprobiert, aber ohne Erfolg.
https://tex.stackexchange.com/a/308164
https://tex.stackexchange.com/a/125099
Ich habe eine Ahnung, dass das, was passiert, mit dem Zeitpunkt der Erweiterung des pgfkey-Werts zusammenhängt, aber ich muss ehrlich zugeben, dass ich nicht ganz verstehe, wie die zugrunde liegende Tex-Engine ihre Magie entfaltet. Ich lerne auch gerade pgfkeys, daher ist mein Verständnis dessen, was dort passiert, noch auf Anfängerniveau.
Hier ist mein Fazit zu dem, was ich versuche zu tun:
\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}
Hier mein aktuelles Ergebnis:
Ich bin nicht an eine bestimmte Lösung gebunden (ich würde eine Lösung bevorzugen, die mit pgfkeys funktioniert), solange ich die Beschriftungen und Referenzen ordnungsgemäß zum Laufen bekomme.