Making refcheck work with cleveref and amsmath












0















This is a follow-up question to Making refcheck work with cleveref about refcheck taking notice of references made with cleveref.



The solution proposed by egreg there works fine if amsmath is not loaded. If amsmath is loaded, cleveref behaves differently for labels of amsmath environments and everything after label is stored verbatim as the label of the object, e.g. the label stored for label{mylabel} is {mylabel} and not label (at least to my understanding).



This problem is mentioned (without the explanation) in the edit of codebeard's answer for the original question, suggesting to inform refcheck that not only e.g. mylabel but also {mylabel} were used any time cref{mylabel} is called. This works, but refcheck now also displays the braces of the label name.



Things get worse since cleveref also allows label types, e.g. label[ineq]{myineq}, which after some setup print ineq. (X) instead of eq. (X) for cref{myineq} (see mwe). The label name checked and displayed by refcheck in this example is then [ineq]{myineq} instead of myineq.



One can extend the curly braces hack above to inform refcheck about usages of mylabel, {mylabel}, [ineq]{mylabel}, etc, any time cref{mylabel} is called, but I my question is:




Is there is a better way to have refcheck, cleveref and amsmath
interoperability which also prevents the cluttering of the displayed
label?




A minimal working example:



documentclass{article}

usepackage{amsmath} % if commented out: expected behavior of refcheck
usepackage{refcheck}
usepackage{cleveref}

% custom cleveref type 'ineq'
crefname{ineq}{ineq.}{ineqs.}
creflabelformat{ineq}{#2{upshape(#1)}#3}

% refcheck <-> cleveref solution with {mylabel} fix from
% https://tex.stackexchange.com/a/247836 :
makeatletter
newcommand{refcheckize}[1]{%
expandafterletcsname @@string#1endcsname#1%
expandafterDeclareRobustCommandcsname relaxstring#1endcsname[1]{%
csname @@string#1endcsname{##1}%
wrtusdrf{##1}% inform about 'mylabel'
wrtusdrf{{##1}}% hack: inform about '{mylabel}'
wrtusdrf{[ineq]{##1}}}% hack: inform about '[ineq]{mylabel}'
expandafterletexpandafter#1csname relaxstring#1endcsname
}
makeatother

refcheckize{cref}

begin{document}

begin{equation}label{myeq}
x = y
end{equation}

begin{equation}label[ineq]{myineq}
x leq y
end{equation}

Reference to cref{myeq} and cref{myineq}.

end{document}


Yields (with hacks)
version with amsmath, with hacks



If the usepackage{amsmath} line is removed (expected behavior)
version without amsmath



If amsmath is used but the hacks are removed, one gets
version with amsmath, without hacks










share|improve this question



























    0















    This is a follow-up question to Making refcheck work with cleveref about refcheck taking notice of references made with cleveref.



    The solution proposed by egreg there works fine if amsmath is not loaded. If amsmath is loaded, cleveref behaves differently for labels of amsmath environments and everything after label is stored verbatim as the label of the object, e.g. the label stored for label{mylabel} is {mylabel} and not label (at least to my understanding).



    This problem is mentioned (without the explanation) in the edit of codebeard's answer for the original question, suggesting to inform refcheck that not only e.g. mylabel but also {mylabel} were used any time cref{mylabel} is called. This works, but refcheck now also displays the braces of the label name.



    Things get worse since cleveref also allows label types, e.g. label[ineq]{myineq}, which after some setup print ineq. (X) instead of eq. (X) for cref{myineq} (see mwe). The label name checked and displayed by refcheck in this example is then [ineq]{myineq} instead of myineq.



    One can extend the curly braces hack above to inform refcheck about usages of mylabel, {mylabel}, [ineq]{mylabel}, etc, any time cref{mylabel} is called, but I my question is:




    Is there is a better way to have refcheck, cleveref and amsmath
    interoperability which also prevents the cluttering of the displayed
    label?




    A minimal working example:



    documentclass{article}

    usepackage{amsmath} % if commented out: expected behavior of refcheck
    usepackage{refcheck}
    usepackage{cleveref}

    % custom cleveref type 'ineq'
    crefname{ineq}{ineq.}{ineqs.}
    creflabelformat{ineq}{#2{upshape(#1)}#3}

    % refcheck <-> cleveref solution with {mylabel} fix from
    % https://tex.stackexchange.com/a/247836 :
    makeatletter
    newcommand{refcheckize}[1]{%
    expandafterletcsname @@string#1endcsname#1%
    expandafterDeclareRobustCommandcsname relaxstring#1endcsname[1]{%
    csname @@string#1endcsname{##1}%
    wrtusdrf{##1}% inform about 'mylabel'
    wrtusdrf{{##1}}% hack: inform about '{mylabel}'
    wrtusdrf{[ineq]{##1}}}% hack: inform about '[ineq]{mylabel}'
    expandafterletexpandafter#1csname relaxstring#1endcsname
    }
    makeatother

    refcheckize{cref}

    begin{document}

    begin{equation}label{myeq}
    x = y
    end{equation}

    begin{equation}label[ineq]{myineq}
    x leq y
    end{equation}

    Reference to cref{myeq} and cref{myineq}.

    end{document}


    Yields (with hacks)
    version with amsmath, with hacks



    If the usepackage{amsmath} line is removed (expected behavior)
    version without amsmath



    If amsmath is used but the hacks are removed, one gets
    version with amsmath, without hacks










    share|improve this question

























      0












      0








      0








      This is a follow-up question to Making refcheck work with cleveref about refcheck taking notice of references made with cleveref.



      The solution proposed by egreg there works fine if amsmath is not loaded. If amsmath is loaded, cleveref behaves differently for labels of amsmath environments and everything after label is stored verbatim as the label of the object, e.g. the label stored for label{mylabel} is {mylabel} and not label (at least to my understanding).



      This problem is mentioned (without the explanation) in the edit of codebeard's answer for the original question, suggesting to inform refcheck that not only e.g. mylabel but also {mylabel} were used any time cref{mylabel} is called. This works, but refcheck now also displays the braces of the label name.



      Things get worse since cleveref also allows label types, e.g. label[ineq]{myineq}, which after some setup print ineq. (X) instead of eq. (X) for cref{myineq} (see mwe). The label name checked and displayed by refcheck in this example is then [ineq]{myineq} instead of myineq.



      One can extend the curly braces hack above to inform refcheck about usages of mylabel, {mylabel}, [ineq]{mylabel}, etc, any time cref{mylabel} is called, but I my question is:




      Is there is a better way to have refcheck, cleveref and amsmath
      interoperability which also prevents the cluttering of the displayed
      label?




      A minimal working example:



      documentclass{article}

      usepackage{amsmath} % if commented out: expected behavior of refcheck
      usepackage{refcheck}
      usepackage{cleveref}

      % custom cleveref type 'ineq'
      crefname{ineq}{ineq.}{ineqs.}
      creflabelformat{ineq}{#2{upshape(#1)}#3}

      % refcheck <-> cleveref solution with {mylabel} fix from
      % https://tex.stackexchange.com/a/247836 :
      makeatletter
      newcommand{refcheckize}[1]{%
      expandafterletcsname @@string#1endcsname#1%
      expandafterDeclareRobustCommandcsname relaxstring#1endcsname[1]{%
      csname @@string#1endcsname{##1}%
      wrtusdrf{##1}% inform about 'mylabel'
      wrtusdrf{{##1}}% hack: inform about '{mylabel}'
      wrtusdrf{[ineq]{##1}}}% hack: inform about '[ineq]{mylabel}'
      expandafterletexpandafter#1csname relaxstring#1endcsname
      }
      makeatother

      refcheckize{cref}

      begin{document}

      begin{equation}label{myeq}
      x = y
      end{equation}

      begin{equation}label[ineq]{myineq}
      x leq y
      end{equation}

      Reference to cref{myeq} and cref{myineq}.

      end{document}


      Yields (with hacks)
      version with amsmath, with hacks



      If the usepackage{amsmath} line is removed (expected behavior)
      version without amsmath



      If amsmath is used but the hacks are removed, one gets
      version with amsmath, without hacks










      share|improve this question














      This is a follow-up question to Making refcheck work with cleveref about refcheck taking notice of references made with cleveref.



      The solution proposed by egreg there works fine if amsmath is not loaded. If amsmath is loaded, cleveref behaves differently for labels of amsmath environments and everything after label is stored verbatim as the label of the object, e.g. the label stored for label{mylabel} is {mylabel} and not label (at least to my understanding).



      This problem is mentioned (without the explanation) in the edit of codebeard's answer for the original question, suggesting to inform refcheck that not only e.g. mylabel but also {mylabel} were used any time cref{mylabel} is called. This works, but refcheck now also displays the braces of the label name.



      Things get worse since cleveref also allows label types, e.g. label[ineq]{myineq}, which after some setup print ineq. (X) instead of eq. (X) for cref{myineq} (see mwe). The label name checked and displayed by refcheck in this example is then [ineq]{myineq} instead of myineq.



      One can extend the curly braces hack above to inform refcheck about usages of mylabel, {mylabel}, [ineq]{mylabel}, etc, any time cref{mylabel} is called, but I my question is:




      Is there is a better way to have refcheck, cleveref and amsmath
      interoperability which also prevents the cluttering of the displayed
      label?




      A minimal working example:



      documentclass{article}

      usepackage{amsmath} % if commented out: expected behavior of refcheck
      usepackage{refcheck}
      usepackage{cleveref}

      % custom cleveref type 'ineq'
      crefname{ineq}{ineq.}{ineqs.}
      creflabelformat{ineq}{#2{upshape(#1)}#3}

      % refcheck <-> cleveref solution with {mylabel} fix from
      % https://tex.stackexchange.com/a/247836 :
      makeatletter
      newcommand{refcheckize}[1]{%
      expandafterletcsname @@string#1endcsname#1%
      expandafterDeclareRobustCommandcsname relaxstring#1endcsname[1]{%
      csname @@string#1endcsname{##1}%
      wrtusdrf{##1}% inform about 'mylabel'
      wrtusdrf{{##1}}% hack: inform about '{mylabel}'
      wrtusdrf{[ineq]{##1}}}% hack: inform about '[ineq]{mylabel}'
      expandafterletexpandafter#1csname relaxstring#1endcsname
      }
      makeatother

      refcheckize{cref}

      begin{document}

      begin{equation}label{myeq}
      x = y
      end{equation}

      begin{equation}label[ineq]{myineq}
      x leq y
      end{equation}

      Reference to cref{myeq} and cref{myineq}.

      end{document}


      Yields (with hacks)
      version with amsmath, with hacks



      If the usepackage{amsmath} line is removed (expected behavior)
      version without amsmath



      If amsmath is used but the hacks are removed, one gets
      version with amsmath, without hacks







      amsmath cleveref refcheck






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 10 hours ago









      Three.OneFourThree.OneFour

      1838




      1838






















          0






          active

          oldest

          votes












          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%2f483351%2fmaking-refcheck-work-with-cleveref-and-amsmath%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          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.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f483351%2fmaking-refcheck-work-with-cleveref-and-amsmath%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

          Lallio

          Futebolista

          Jornalista