ref with the counter value












4














Is there some package providing a simple user interface to return the counter value (not the formatted cross-reference, as ref does) of a label? It seems neither zref, not refcount, nor cleveref, among others, provide it. cleveref saves the counter value to the aux file, but I couldn't find in the docs a macro to retrieve it (something like, say, numbercref), even if internally there is a cref@getcounter for that.



Please, note I'm not asking how to do it, just if there is a package with a simple user interface.










share|improve this question






















  • For more complex problems, zref is the better way to go, I think
    – Christian Hupfer
    1 hour ago










  • One 'disadvantage' with zref is that it is necessary to use zlabel -- i.e. zref does not hook into label as cleveref does -- the zlabel must be specified in addition to label
    – Christian Hupfer
    30 mins ago
















4














Is there some package providing a simple user interface to return the counter value (not the formatted cross-reference, as ref does) of a label? It seems neither zref, not refcount, nor cleveref, among others, provide it. cleveref saves the counter value to the aux file, but I couldn't find in the docs a macro to retrieve it (something like, say, numbercref), even if internally there is a cref@getcounter for that.



Please, note I'm not asking how to do it, just if there is a package with a simple user interface.










share|improve this question






















  • For more complex problems, zref is the better way to go, I think
    – Christian Hupfer
    1 hour ago










  • One 'disadvantage' with zref is that it is necessary to use zlabel -- i.e. zref does not hook into label as cleveref does -- the zlabel must be specified in addition to label
    – Christian Hupfer
    30 mins ago














4












4








4







Is there some package providing a simple user interface to return the counter value (not the formatted cross-reference, as ref does) of a label? It seems neither zref, not refcount, nor cleveref, among others, provide it. cleveref saves the counter value to the aux file, but I couldn't find in the docs a macro to retrieve it (something like, say, numbercref), even if internally there is a cref@getcounter for that.



Please, note I'm not asking how to do it, just if there is a package with a simple user interface.










share|improve this question













Is there some package providing a simple user interface to return the counter value (not the formatted cross-reference, as ref does) of a label? It seems neither zref, not refcount, nor cleveref, among others, provide it. cleveref saves the counter value to the aux file, but I couldn't find in the docs a macro to retrieve it (something like, say, numbercref), even if internally there is a cref@getcounter for that.



Please, note I'm not asking how to do it, just if there is a package with a simple user interface.







cross-referencing






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 1 hour ago









Javier Bezos

3,8261215




3,8261215












  • For more complex problems, zref is the better way to go, I think
    – Christian Hupfer
    1 hour ago










  • One 'disadvantage' with zref is that it is necessary to use zlabel -- i.e. zref does not hook into label as cleveref does -- the zlabel must be specified in addition to label
    – Christian Hupfer
    30 mins ago


















  • For more complex problems, zref is the better way to go, I think
    – Christian Hupfer
    1 hour ago










  • One 'disadvantage' with zref is that it is necessary to use zlabel -- i.e. zref does not hook into label as cleveref does -- the zlabel must be specified in addition to label
    – Christian Hupfer
    30 mins ago
















For more complex problems, zref is the better way to go, I think
– Christian Hupfer
1 hour ago




For more complex problems, zref is the better way to go, I think
– Christian Hupfer
1 hour ago












One 'disadvantage' with zref is that it is necessary to use zlabel -- i.e. zref does not hook into label as cleveref does -- the zlabel must be specified in addition to label
– Christian Hupfer
30 mins ago




One 'disadvantage' with zref is that it is necessary to use zlabel -- i.e. zref does not hook into label as cleveref does -- the zlabel must be specified in addition to label
– Christian Hupfer
30 mins ago










1 Answer
1






active

oldest

votes


















3














I have written crossreftools about one year ago, this package extracts information from cleveref labels with crtcrefnumber, this holds the number of the counter, using the special way how cleveref stores the information in its labels.



Traditional labels do not support this, since those labels apply thefoo, meaning that something like renewcommand{thefoo}{arabic{chapter}.Roman{section}.Alph{foo}} will store 4.II.C, for example. This way crtrefnumber will report the usual reference value but not the counter value of foo, 3 in the above example.



Most crt... macros are expandable.



The zref package is very sophisticated, but it does not provide means to store the counter value -- the counter name is quite easy to catch, by loading the counter module of zref.



enter image description here



documentclass{book}


usepackage{cleveref}
usepackage{crossreftools}

begin{document}

See crtrefnumber{foosec} or crtcrefnumber{foosec}

chapter{Foo}

setcounter{section}{99}

section{A foo section} label{foosec}

end{document}


Update



Here is version with zref, that stores the name of the last counter being used in refstepcounter and extracts the value with zlabels then.



documentclass{book}

usepackage[user,counter]{zref}

setcounter{secnumdepth}{4}

makeatletter
AtBeginDocument{%
letoriginalrefstepcounterrefstepcounter%
renewcommand{refstepcounter}[1]{%
xdef@@lastrefsteppedcounter{#1}%
originalrefstepcounter{#1}%
}
}

zref@newprop{value}[-100000]{numbervalue{@@lastrefsteppedcounter}}
zref@addprop{main}{value}
newcommand{counterref}[1]{%
zref@extract{#1}{value}%
}
makeatother

usepackage{cleveref}
usepackage{crossreftools}

counterwithin{equation}{chapter}

% some helper macros in order to simplify demonstration of counter values

newcommand{foosectionnumber}{100}
newcommand{foosubsectionnumber}{20}
newcommand{foosubsubsectionnumber}{44}
newcommand{einsteinnumber}{1905}

newcommand{foofigurenumber}{2018}


begin{document}

newcommand{tableentryline}[2]{%
tabularnewline
#1 & #2 & crtrefnumber{#1} & crtcrefnumber{#1} & counterref{#1} tabularnewline
tabularnewline
hline
}

begin{tabular}{lllll}
label & Expected value & verb!crtrefnumber! & verb!crtcrefnumber! & verb!counterref! tabularnewline
hline
tableentryline{foosec}{foosectionnumber}
tableentryline{foosubsec}{foosubsectionnumber}
tableentryline{foosubsubsec}{foosubsubsectionnumber}
tableentryline{einstein}{einsteinnumber}
tableentryline{foofigure}{foofigurenumber}
end{tabular}


chapter{Foo}

setcounter{equation}{numexpreinsteinnumber-1}

setcounter{section}{numexprfoosectionnumber-1}

setcounter{figure}{numexprfoofigurenumber-1}


section{A foo section} label{foosec}zlabel{foosec}

setcounter{subsection}{numexprfoosubsectionnumber-1}
subsection{A foo subsection} label{foosubsec} zlabel{foosubsec}

setcounter{subsubsection}{numexprfoosubsubsectionnumber-1}

subsubsection{A foo subsubsection} label{foosubsubsec} zlabel{foosubsubsec}

begin{equation}
E= mc^{2} label{einstein} zlabel{einstein}
end{equation}

begin{figure}
caption{foofigure} label{foofigure} zlabel{foofigure}
end{figure}

end{document}


enter image description here






share|improve this answer























  • See also xassoccnt and RegisterPreLabelHook{zlabel} such that label produces both the orginal label and does call zlabel as well
    – Christian Hupfer
    26 mins ago











Your Answer








StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f467759%2fref-with-the-counter-value%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














I have written crossreftools about one year ago, this package extracts information from cleveref labels with crtcrefnumber, this holds the number of the counter, using the special way how cleveref stores the information in its labels.



Traditional labels do not support this, since those labels apply thefoo, meaning that something like renewcommand{thefoo}{arabic{chapter}.Roman{section}.Alph{foo}} will store 4.II.C, for example. This way crtrefnumber will report the usual reference value but not the counter value of foo, 3 in the above example.



Most crt... macros are expandable.



The zref package is very sophisticated, but it does not provide means to store the counter value -- the counter name is quite easy to catch, by loading the counter module of zref.



enter image description here



documentclass{book}


usepackage{cleveref}
usepackage{crossreftools}

begin{document}

See crtrefnumber{foosec} or crtcrefnumber{foosec}

chapter{Foo}

setcounter{section}{99}

section{A foo section} label{foosec}

end{document}


Update



Here is version with zref, that stores the name of the last counter being used in refstepcounter and extracts the value with zlabels then.



documentclass{book}

usepackage[user,counter]{zref}

setcounter{secnumdepth}{4}

makeatletter
AtBeginDocument{%
letoriginalrefstepcounterrefstepcounter%
renewcommand{refstepcounter}[1]{%
xdef@@lastrefsteppedcounter{#1}%
originalrefstepcounter{#1}%
}
}

zref@newprop{value}[-100000]{numbervalue{@@lastrefsteppedcounter}}
zref@addprop{main}{value}
newcommand{counterref}[1]{%
zref@extract{#1}{value}%
}
makeatother

usepackage{cleveref}
usepackage{crossreftools}

counterwithin{equation}{chapter}

% some helper macros in order to simplify demonstration of counter values

newcommand{foosectionnumber}{100}
newcommand{foosubsectionnumber}{20}
newcommand{foosubsubsectionnumber}{44}
newcommand{einsteinnumber}{1905}

newcommand{foofigurenumber}{2018}


begin{document}

newcommand{tableentryline}[2]{%
tabularnewline
#1 & #2 & crtrefnumber{#1} & crtcrefnumber{#1} & counterref{#1} tabularnewline
tabularnewline
hline
}

begin{tabular}{lllll}
label & Expected value & verb!crtrefnumber! & verb!crtcrefnumber! & verb!counterref! tabularnewline
hline
tableentryline{foosec}{foosectionnumber}
tableentryline{foosubsec}{foosubsectionnumber}
tableentryline{foosubsubsec}{foosubsubsectionnumber}
tableentryline{einstein}{einsteinnumber}
tableentryline{foofigure}{foofigurenumber}
end{tabular}


chapter{Foo}

setcounter{equation}{numexpreinsteinnumber-1}

setcounter{section}{numexprfoosectionnumber-1}

setcounter{figure}{numexprfoofigurenumber-1}


section{A foo section} label{foosec}zlabel{foosec}

setcounter{subsection}{numexprfoosubsectionnumber-1}
subsection{A foo subsection} label{foosubsec} zlabel{foosubsec}

setcounter{subsubsection}{numexprfoosubsubsectionnumber-1}

subsubsection{A foo subsubsection} label{foosubsubsec} zlabel{foosubsubsec}

begin{equation}
E= mc^{2} label{einstein} zlabel{einstein}
end{equation}

begin{figure}
caption{foofigure} label{foofigure} zlabel{foofigure}
end{figure}

end{document}


enter image description here






share|improve this answer























  • See also xassoccnt and RegisterPreLabelHook{zlabel} such that label produces both the orginal label and does call zlabel as well
    – Christian Hupfer
    26 mins ago
















3














I have written crossreftools about one year ago, this package extracts information from cleveref labels with crtcrefnumber, this holds the number of the counter, using the special way how cleveref stores the information in its labels.



Traditional labels do not support this, since those labels apply thefoo, meaning that something like renewcommand{thefoo}{arabic{chapter}.Roman{section}.Alph{foo}} will store 4.II.C, for example. This way crtrefnumber will report the usual reference value but not the counter value of foo, 3 in the above example.



Most crt... macros are expandable.



The zref package is very sophisticated, but it does not provide means to store the counter value -- the counter name is quite easy to catch, by loading the counter module of zref.



enter image description here



documentclass{book}


usepackage{cleveref}
usepackage{crossreftools}

begin{document}

See crtrefnumber{foosec} or crtcrefnumber{foosec}

chapter{Foo}

setcounter{section}{99}

section{A foo section} label{foosec}

end{document}


Update



Here is version with zref, that stores the name of the last counter being used in refstepcounter and extracts the value with zlabels then.



documentclass{book}

usepackage[user,counter]{zref}

setcounter{secnumdepth}{4}

makeatletter
AtBeginDocument{%
letoriginalrefstepcounterrefstepcounter%
renewcommand{refstepcounter}[1]{%
xdef@@lastrefsteppedcounter{#1}%
originalrefstepcounter{#1}%
}
}

zref@newprop{value}[-100000]{numbervalue{@@lastrefsteppedcounter}}
zref@addprop{main}{value}
newcommand{counterref}[1]{%
zref@extract{#1}{value}%
}
makeatother

usepackage{cleveref}
usepackage{crossreftools}

counterwithin{equation}{chapter}

% some helper macros in order to simplify demonstration of counter values

newcommand{foosectionnumber}{100}
newcommand{foosubsectionnumber}{20}
newcommand{foosubsubsectionnumber}{44}
newcommand{einsteinnumber}{1905}

newcommand{foofigurenumber}{2018}


begin{document}

newcommand{tableentryline}[2]{%
tabularnewline
#1 & #2 & crtrefnumber{#1} & crtcrefnumber{#1} & counterref{#1} tabularnewline
tabularnewline
hline
}

begin{tabular}{lllll}
label & Expected value & verb!crtrefnumber! & verb!crtcrefnumber! & verb!counterref! tabularnewline
hline
tableentryline{foosec}{foosectionnumber}
tableentryline{foosubsec}{foosubsectionnumber}
tableentryline{foosubsubsec}{foosubsubsectionnumber}
tableentryline{einstein}{einsteinnumber}
tableentryline{foofigure}{foofigurenumber}
end{tabular}


chapter{Foo}

setcounter{equation}{numexpreinsteinnumber-1}

setcounter{section}{numexprfoosectionnumber-1}

setcounter{figure}{numexprfoofigurenumber-1}


section{A foo section} label{foosec}zlabel{foosec}

setcounter{subsection}{numexprfoosubsectionnumber-1}
subsection{A foo subsection} label{foosubsec} zlabel{foosubsec}

setcounter{subsubsection}{numexprfoosubsubsectionnumber-1}

subsubsection{A foo subsubsection} label{foosubsubsec} zlabel{foosubsubsec}

begin{equation}
E= mc^{2} label{einstein} zlabel{einstein}
end{equation}

begin{figure}
caption{foofigure} label{foofigure} zlabel{foofigure}
end{figure}

end{document}


enter image description here






share|improve this answer























  • See also xassoccnt and RegisterPreLabelHook{zlabel} such that label produces both the orginal label and does call zlabel as well
    – Christian Hupfer
    26 mins ago














3












3








3






I have written crossreftools about one year ago, this package extracts information from cleveref labels with crtcrefnumber, this holds the number of the counter, using the special way how cleveref stores the information in its labels.



Traditional labels do not support this, since those labels apply thefoo, meaning that something like renewcommand{thefoo}{arabic{chapter}.Roman{section}.Alph{foo}} will store 4.II.C, for example. This way crtrefnumber will report the usual reference value but not the counter value of foo, 3 in the above example.



Most crt... macros are expandable.



The zref package is very sophisticated, but it does not provide means to store the counter value -- the counter name is quite easy to catch, by loading the counter module of zref.



enter image description here



documentclass{book}


usepackage{cleveref}
usepackage{crossreftools}

begin{document}

See crtrefnumber{foosec} or crtcrefnumber{foosec}

chapter{Foo}

setcounter{section}{99}

section{A foo section} label{foosec}

end{document}


Update



Here is version with zref, that stores the name of the last counter being used in refstepcounter and extracts the value with zlabels then.



documentclass{book}

usepackage[user,counter]{zref}

setcounter{secnumdepth}{4}

makeatletter
AtBeginDocument{%
letoriginalrefstepcounterrefstepcounter%
renewcommand{refstepcounter}[1]{%
xdef@@lastrefsteppedcounter{#1}%
originalrefstepcounter{#1}%
}
}

zref@newprop{value}[-100000]{numbervalue{@@lastrefsteppedcounter}}
zref@addprop{main}{value}
newcommand{counterref}[1]{%
zref@extract{#1}{value}%
}
makeatother

usepackage{cleveref}
usepackage{crossreftools}

counterwithin{equation}{chapter}

% some helper macros in order to simplify demonstration of counter values

newcommand{foosectionnumber}{100}
newcommand{foosubsectionnumber}{20}
newcommand{foosubsubsectionnumber}{44}
newcommand{einsteinnumber}{1905}

newcommand{foofigurenumber}{2018}


begin{document}

newcommand{tableentryline}[2]{%
tabularnewline
#1 & #2 & crtrefnumber{#1} & crtcrefnumber{#1} & counterref{#1} tabularnewline
tabularnewline
hline
}

begin{tabular}{lllll}
label & Expected value & verb!crtrefnumber! & verb!crtcrefnumber! & verb!counterref! tabularnewline
hline
tableentryline{foosec}{foosectionnumber}
tableentryline{foosubsec}{foosubsectionnumber}
tableentryline{foosubsubsec}{foosubsubsectionnumber}
tableentryline{einstein}{einsteinnumber}
tableentryline{foofigure}{foofigurenumber}
end{tabular}


chapter{Foo}

setcounter{equation}{numexpreinsteinnumber-1}

setcounter{section}{numexprfoosectionnumber-1}

setcounter{figure}{numexprfoofigurenumber-1}


section{A foo section} label{foosec}zlabel{foosec}

setcounter{subsection}{numexprfoosubsectionnumber-1}
subsection{A foo subsection} label{foosubsec} zlabel{foosubsec}

setcounter{subsubsection}{numexprfoosubsubsectionnumber-1}

subsubsection{A foo subsubsection} label{foosubsubsec} zlabel{foosubsubsec}

begin{equation}
E= mc^{2} label{einstein} zlabel{einstein}
end{equation}

begin{figure}
caption{foofigure} label{foofigure} zlabel{foofigure}
end{figure}

end{document}


enter image description here






share|improve this answer














I have written crossreftools about one year ago, this package extracts information from cleveref labels with crtcrefnumber, this holds the number of the counter, using the special way how cleveref stores the information in its labels.



Traditional labels do not support this, since those labels apply thefoo, meaning that something like renewcommand{thefoo}{arabic{chapter}.Roman{section}.Alph{foo}} will store 4.II.C, for example. This way crtrefnumber will report the usual reference value but not the counter value of foo, 3 in the above example.



Most crt... macros are expandable.



The zref package is very sophisticated, but it does not provide means to store the counter value -- the counter name is quite easy to catch, by loading the counter module of zref.



enter image description here



documentclass{book}


usepackage{cleveref}
usepackage{crossreftools}

begin{document}

See crtrefnumber{foosec} or crtcrefnumber{foosec}

chapter{Foo}

setcounter{section}{99}

section{A foo section} label{foosec}

end{document}


Update



Here is version with zref, that stores the name of the last counter being used in refstepcounter and extracts the value with zlabels then.



documentclass{book}

usepackage[user,counter]{zref}

setcounter{secnumdepth}{4}

makeatletter
AtBeginDocument{%
letoriginalrefstepcounterrefstepcounter%
renewcommand{refstepcounter}[1]{%
xdef@@lastrefsteppedcounter{#1}%
originalrefstepcounter{#1}%
}
}

zref@newprop{value}[-100000]{numbervalue{@@lastrefsteppedcounter}}
zref@addprop{main}{value}
newcommand{counterref}[1]{%
zref@extract{#1}{value}%
}
makeatother

usepackage{cleveref}
usepackage{crossreftools}

counterwithin{equation}{chapter}

% some helper macros in order to simplify demonstration of counter values

newcommand{foosectionnumber}{100}
newcommand{foosubsectionnumber}{20}
newcommand{foosubsubsectionnumber}{44}
newcommand{einsteinnumber}{1905}

newcommand{foofigurenumber}{2018}


begin{document}

newcommand{tableentryline}[2]{%
tabularnewline
#1 & #2 & crtrefnumber{#1} & crtcrefnumber{#1} & counterref{#1} tabularnewline
tabularnewline
hline
}

begin{tabular}{lllll}
label & Expected value & verb!crtrefnumber! & verb!crtcrefnumber! & verb!counterref! tabularnewline
hline
tableentryline{foosec}{foosectionnumber}
tableentryline{foosubsec}{foosubsectionnumber}
tableentryline{foosubsubsec}{foosubsubsectionnumber}
tableentryline{einstein}{einsteinnumber}
tableentryline{foofigure}{foofigurenumber}
end{tabular}


chapter{Foo}

setcounter{equation}{numexpreinsteinnumber-1}

setcounter{section}{numexprfoosectionnumber-1}

setcounter{figure}{numexprfoofigurenumber-1}


section{A foo section} label{foosec}zlabel{foosec}

setcounter{subsection}{numexprfoosubsectionnumber-1}
subsection{A foo subsection} label{foosubsec} zlabel{foosubsec}

setcounter{subsubsection}{numexprfoosubsubsectionnumber-1}

subsubsection{A foo subsubsection} label{foosubsubsec} zlabel{foosubsubsec}

begin{equation}
E= mc^{2} label{einstein} zlabel{einstein}
end{equation}

begin{figure}
caption{foofigure} label{foofigure} zlabel{foofigure}
end{figure}

end{document}


enter image description here







share|improve this answer














share|improve this answer



share|improve this answer








edited 33 mins ago

























answered 1 hour ago









Christian Hupfer

147k14192384




147k14192384












  • See also xassoccnt and RegisterPreLabelHook{zlabel} such that label produces both the orginal label and does call zlabel as well
    – Christian Hupfer
    26 mins ago


















  • See also xassoccnt and RegisterPreLabelHook{zlabel} such that label produces both the orginal label and does call zlabel as well
    – Christian Hupfer
    26 mins ago
















See also xassoccnt and RegisterPreLabelHook{zlabel} such that label produces both the orginal label and does call zlabel as well
– Christian Hupfer
26 mins ago




See also xassoccnt and RegisterPreLabelHook{zlabel} such that label produces both the orginal label and does call zlabel as well
– Christian Hupfer
26 mins ago


















draft saved

draft discarded




















































Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f467759%2fref-with-the-counter-value%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Morgemoulin

Scott Moir

Souastre