Conditionally execute a command if a specific package is loadedHow to conditionally load a package only if...

How to ask a man to not take up more than one seat on public transport while avoiding conflict?

Subtle meanings of the noun 'stole', or am I reading too much in to it?

Is it possible to encode a message in such a way that can only be read by someone or something capable of seeing into the very near future?

Why does NASA publish all the results/data it gets?

Does wetting a beer glass change the foam characteristics?

Can the U.S. president make military decisions without consulting anyone?

Wrong result by FindRoot

What do you do if you have developments on your paper during the long peer review process?

Resolving moral conflict

To what extent is it worthwhile to report check fraud / refund scams?

Has my MacBook been hacked?

reverse a list of generic type

How does IBM's 53-bit quantum computer compare to classical ones for cryptanalytic tasks?

1, 2, 4, 8, 16, ... 33?

Where Does VDD+0.3V Input Limit Come From on IC chips?

Performance for simple code that converts a RGB tuple to hex string

Conditionally execute a command if a specific package is loaded

What can a pilot do if an air traffic controller is incapacitated?

Is this a Sherman, and if so what model?

Does a GFCI-protected bath light/fan unit need separate neutrals?

What are the benefits and disadvantages if a creature has multiple tails, e.g., Kyuubi or Nekomata?

Late 1970's and 6502 chip facilities for operating systems

Is there a scenario where a gnoll flesh gnawer can move at least 45 feet during its Rampage bonus action?

How can an attacker use robots.txt?



Conditionally execute a command if a specific package is loaded


How to conditionally load a package only if shell-escape (write18) is passedLoading a package conditionallyHow do I conditionally execute something based on a documentclass option?How do I execute some commands conditionally?How to implement a command that checks for loaded packages?How to warn if a package hasn't been loadedConditionally use package and define commandMaking a beamer section appear conditionally in TOC (on specific slide)?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







2















I am loading the gitver package based on the expl3 solution accepted for my question here.



However, I need to use some commands depending on whether the package has actually been loaded. For instance, using a combination of hyperxmp, hyperref and gitver, one can provide an option pdfversionid = gitVer to the hypersetup command (see code below).



The question is, how do I conditionally detect the presence of a package loaded (gitver in my example) and set up this conditional compilation?



Minimal conceptual example:



documentclass{article}
usepackage{expl3}
csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
usepackage{hyperxmp}
usepackage{hyperref}


% this commented paragraph is conceptual & needs fixing through a solution from this forum
% hypersetup{%
% pdfversionid = {detect if gitver has been loaded & set to gitVer if so; otherwise set to empty {}}
% }%

begin{document}
Hello world!

% The following again describes my intended requirements in words
% detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"

end{document}









share|improve this question

























  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    9 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer yes. works inside the preamble, but breaks within the document

    – Krishna
    9 hours ago











  • the ltxcmds package has ltx@ifpackageloaded, that works in the document too.

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer cool. the ltxcmds package worked great for me. Thank you!

    – Krishna
    9 hours ago


















2















I am loading the gitver package based on the expl3 solution accepted for my question here.



However, I need to use some commands depending on whether the package has actually been loaded. For instance, using a combination of hyperxmp, hyperref and gitver, one can provide an option pdfversionid = gitVer to the hypersetup command (see code below).



The question is, how do I conditionally detect the presence of a package loaded (gitver in my example) and set up this conditional compilation?



Minimal conceptual example:



documentclass{article}
usepackage{expl3}
csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
usepackage{hyperxmp}
usepackage{hyperref}


% this commented paragraph is conceptual & needs fixing through a solution from this forum
% hypersetup{%
% pdfversionid = {detect if gitver has been loaded & set to gitVer if so; otherwise set to empty {}}
% }%

begin{document}
Hello world!

% The following again describes my intended requirements in words
% detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"

end{document}









share|improve this question

























  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    9 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer yes. works inside the preamble, but breaks within the document

    – Krishna
    9 hours ago











  • the ltxcmds package has ltx@ifpackageloaded, that works in the document too.

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer cool. the ltxcmds package worked great for me. Thank you!

    – Krishna
    9 hours ago














2












2








2








I am loading the gitver package based on the expl3 solution accepted for my question here.



However, I need to use some commands depending on whether the package has actually been loaded. For instance, using a combination of hyperxmp, hyperref and gitver, one can provide an option pdfversionid = gitVer to the hypersetup command (see code below).



The question is, how do I conditionally detect the presence of a package loaded (gitver in my example) and set up this conditional compilation?



Minimal conceptual example:



documentclass{article}
usepackage{expl3}
csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
usepackage{hyperxmp}
usepackage{hyperref}


% this commented paragraph is conceptual & needs fixing through a solution from this forum
% hypersetup{%
% pdfversionid = {detect if gitver has been loaded & set to gitVer if so; otherwise set to empty {}}
% }%

begin{document}
Hello world!

% The following again describes my intended requirements in words
% detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"

end{document}









share|improve this question














I am loading the gitver package based on the expl3 solution accepted for my question here.



However, I need to use some commands depending on whether the package has actually been loaded. For instance, using a combination of hyperxmp, hyperref and gitver, one can provide an option pdfversionid = gitVer to the hypersetup command (see code below).



The question is, how do I conditionally detect the presence of a package loaded (gitver in my example) and set up this conditional compilation?



Minimal conceptual example:



documentclass{article}
usepackage{expl3}
csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
usepackage{hyperxmp}
usepackage{hyperref}


% this commented paragraph is conceptual & needs fixing through a solution from this forum
% hypersetup{%
% pdfversionid = {detect if gitver has been loaded & set to gitVer if so; otherwise set to empty {}}
% }%

begin{document}
Hello world!

% The following again describes my intended requirements in words
% detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"

end{document}






packages conditionals condition






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 10 hours ago









KrishnaKrishna

1,2666 silver badges20 bronze badges




1,2666 silver badges20 bronze badges
















  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    9 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer yes. works inside the preamble, but breaks within the document

    – Krishna
    9 hours ago











  • the ltxcmds package has ltx@ifpackageloaded, that works in the document too.

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer cool. the ltxcmds package worked great for me. Thank you!

    – Krishna
    9 hours ago



















  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    9 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer yes. works inside the preamble, but breaks within the document

    – Krishna
    9 hours ago











  • the ltxcmds package has ltx@ifpackageloaded, that works in the document too.

    – Ulrike Fischer
    9 hours ago











  • @UlrikeFischer cool. the ltxcmds package worked great for me. Thank you!

    – Krishna
    9 hours ago

















@UlrikeFischer. Breaks and complains loudly with error messages

– Krishna
9 hours ago





@UlrikeFischer. Breaks and complains loudly with error messages

– Krishna
9 hours ago













did you use makeatletter?

– Ulrike Fischer
9 hours ago





did you use makeatletter?

– Ulrike Fischer
9 hours ago













@UlrikeFischer yes. works inside the preamble, but breaks within the document

– Krishna
9 hours ago





@UlrikeFischer yes. works inside the preamble, but breaks within the document

– Krishna
9 hours ago













the ltxcmds package has ltx@ifpackageloaded, that works in the document too.

– Ulrike Fischer
9 hours ago





the ltxcmds package has ltx@ifpackageloaded, that works in the document too.

– Ulrike Fischer
9 hours ago













@UlrikeFischer cool. the ltxcmds package worked great for me. Thank you!

– Krishna
9 hours ago





@UlrikeFischer cool. the ltxcmds package worked great for me. Thank you!

– Krishna
9 hours ago










2 Answers
2






active

oldest

votes


















3
















Normally you would just use @ifpackageloaded, but the command is limited to the preamble. To use it in the document body you need ltx@ifpackageloaded from the ltxcmds package. Since the macro has an @ in the name, you need to wrap it in makeatletter and makeatother.



documentclass{article}
usepackage{expl3}
usepackage{ltxcmds}
%csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
usepackage{hyperxmp}
usepackage{hyperref}

makeatletter
% this commented paragraph is conceptual & needs fixing through a solution from this forum
@ifpackageloaded{gitver}{
hypersetup{pdfversionid = gitVer}
}{
hypersetup{pdfversionid = {}}
}
makeatother

begin{document}
Hello world!

meaninggitVer
% The following again describes my intended requirements in words
% detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"
makeatletter
ltx@ifpackageloaded{gitver}{versionBox{}}{gitver not loaded}
makeatother

end{document}





share|improve this answer

































    5
















    Assuming that gitVer and VersionBox are defined by gitver, just add



    providecommand{gitVer}{}
    providecommand{VersionBox}[1]{gitver not loaded}


    after the conditional loading.



    This exploits the fact that providecommand does nothing if the command is already defined.






    share|improve this answer


























    • thank you. It worked for me. However, I think the ltxcmds package is a bit more flexible, and hence I'd like to accept that answer. However, yours is a valid solution and I am upvoting this.

      – Krishna
      9 hours ago











    • @Krishna I disagree about the flexibility and you're fill your document with extraneous bits of code.

      – egreg
      9 hours 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/4.0/"u003ecc by-sa 4.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%2f508952%2fconditionally-execute-a-command-if-a-specific-package-is-loaded%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3
















    Normally you would just use @ifpackageloaded, but the command is limited to the preamble. To use it in the document body you need ltx@ifpackageloaded from the ltxcmds package. Since the macro has an @ in the name, you need to wrap it in makeatletter and makeatother.



    documentclass{article}
    usepackage{expl3}
    usepackage{ltxcmds}
    %csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
    usepackage{hyperxmp}
    usepackage{hyperref}

    makeatletter
    % this commented paragraph is conceptual & needs fixing through a solution from this forum
    @ifpackageloaded{gitver}{
    hypersetup{pdfversionid = gitVer}
    }{
    hypersetup{pdfversionid = {}}
    }
    makeatother

    begin{document}
    Hello world!

    meaninggitVer
    % The following again describes my intended requirements in words
    % detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"
    makeatletter
    ltx@ifpackageloaded{gitver}{versionBox{}}{gitver not loaded}
    makeatother

    end{document}





    share|improve this answer






























      3
















      Normally you would just use @ifpackageloaded, but the command is limited to the preamble. To use it in the document body you need ltx@ifpackageloaded from the ltxcmds package. Since the macro has an @ in the name, you need to wrap it in makeatletter and makeatother.



      documentclass{article}
      usepackage{expl3}
      usepackage{ltxcmds}
      %csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
      usepackage{hyperxmp}
      usepackage{hyperref}

      makeatletter
      % this commented paragraph is conceptual & needs fixing through a solution from this forum
      @ifpackageloaded{gitver}{
      hypersetup{pdfversionid = gitVer}
      }{
      hypersetup{pdfversionid = {}}
      }
      makeatother

      begin{document}
      Hello world!

      meaninggitVer
      % The following again describes my intended requirements in words
      % detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"
      makeatletter
      ltx@ifpackageloaded{gitver}{versionBox{}}{gitver not loaded}
      makeatother

      end{document}





      share|improve this answer




























        3














        3










        3









        Normally you would just use @ifpackageloaded, but the command is limited to the preamble. To use it in the document body you need ltx@ifpackageloaded from the ltxcmds package. Since the macro has an @ in the name, you need to wrap it in makeatletter and makeatother.



        documentclass{article}
        usepackage{expl3}
        usepackage{ltxcmds}
        %csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
        usepackage{hyperxmp}
        usepackage{hyperref}

        makeatletter
        % this commented paragraph is conceptual & needs fixing through a solution from this forum
        @ifpackageloaded{gitver}{
        hypersetup{pdfversionid = gitVer}
        }{
        hypersetup{pdfversionid = {}}
        }
        makeatother

        begin{document}
        Hello world!

        meaninggitVer
        % The following again describes my intended requirements in words
        % detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"
        makeatletter
        ltx@ifpackageloaded{gitver}{versionBox{}}{gitver not loaded}
        makeatother

        end{document}





        share|improve this answer













        Normally you would just use @ifpackageloaded, but the command is limited to the preamble. To use it in the document body you need ltx@ifpackageloaded from the ltxcmds package. Since the macro has an @ in the name, you need to wrap it in makeatletter and makeatother.



        documentclass{article}
        usepackage{expl3}
        usepackage{ltxcmds}
        %csname sys_if_shell_unrestricted:Tendcsname{usepackage{gitver}}
        usepackage{hyperxmp}
        usepackage{hyperref}

        makeatletter
        % this commented paragraph is conceptual & needs fixing through a solution from this forum
        @ifpackageloaded{gitver}{
        hypersetup{pdfversionid = gitVer}
        }{
        hypersetup{pdfversionid = {}}
        }
        makeatother

        begin{document}
        Hello world!

        meaninggitVer
        % The following again describes my intended requirements in words
        % detect if gitver has been loaded & print versionBox{} if so; otherwise print "gitver not loaded"
        makeatletter
        ltx@ifpackageloaded{gitver}{versionBox{}}{gitver not loaded}
        makeatother

        end{document}






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 9 hours ago









        StrongBadStrongBad

        13.6k6 gold badges50 silver badges107 bronze badges




        13.6k6 gold badges50 silver badges107 bronze badges




























            5
















            Assuming that gitVer and VersionBox are defined by gitver, just add



            providecommand{gitVer}{}
            providecommand{VersionBox}[1]{gitver not loaded}


            after the conditional loading.



            This exploits the fact that providecommand does nothing if the command is already defined.






            share|improve this answer


























            • thank you. It worked for me. However, I think the ltxcmds package is a bit more flexible, and hence I'd like to accept that answer. However, yours is a valid solution and I am upvoting this.

              – Krishna
              9 hours ago











            • @Krishna I disagree about the flexibility and you're fill your document with extraneous bits of code.

              – egreg
              9 hours ago


















            5
















            Assuming that gitVer and VersionBox are defined by gitver, just add



            providecommand{gitVer}{}
            providecommand{VersionBox}[1]{gitver not loaded}


            after the conditional loading.



            This exploits the fact that providecommand does nothing if the command is already defined.






            share|improve this answer


























            • thank you. It worked for me. However, I think the ltxcmds package is a bit more flexible, and hence I'd like to accept that answer. However, yours is a valid solution and I am upvoting this.

              – Krishna
              9 hours ago











            • @Krishna I disagree about the flexibility and you're fill your document with extraneous bits of code.

              – egreg
              9 hours ago
















            5














            5










            5









            Assuming that gitVer and VersionBox are defined by gitver, just add



            providecommand{gitVer}{}
            providecommand{VersionBox}[1]{gitver not loaded}


            after the conditional loading.



            This exploits the fact that providecommand does nothing if the command is already defined.






            share|improve this answer













            Assuming that gitVer and VersionBox are defined by gitver, just add



            providecommand{gitVer}{}
            providecommand{VersionBox}[1]{gitver not loaded}


            after the conditional loading.



            This exploits the fact that providecommand does nothing if the command is already defined.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 9 hours ago









            egregegreg

            770k91 gold badges2011 silver badges3367 bronze badges




            770k91 gold badges2011 silver badges3367 bronze badges
















            • thank you. It worked for me. However, I think the ltxcmds package is a bit more flexible, and hence I'd like to accept that answer. However, yours is a valid solution and I am upvoting this.

              – Krishna
              9 hours ago











            • @Krishna I disagree about the flexibility and you're fill your document with extraneous bits of code.

              – egreg
              9 hours ago





















            • thank you. It worked for me. However, I think the ltxcmds package is a bit more flexible, and hence I'd like to accept that answer. However, yours is a valid solution and I am upvoting this.

              – Krishna
              9 hours ago











            • @Krishna I disagree about the flexibility and you're fill your document with extraneous bits of code.

              – egreg
              9 hours ago



















            thank you. It worked for me. However, I think the ltxcmds package is a bit more flexible, and hence I'd like to accept that answer. However, yours is a valid solution and I am upvoting this.

            – Krishna
            9 hours ago





            thank you. It worked for me. However, I think the ltxcmds package is a bit more flexible, and hence I'd like to accept that answer. However, yours is a valid solution and I am upvoting this.

            – Krishna
            9 hours ago













            @Krishna I disagree about the flexibility and you're fill your document with extraneous bits of code.

            – egreg
            9 hours ago







            @Krishna I disagree about the flexibility and you're fill your document with extraneous bits of code.

            – egreg
            9 hours 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.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f508952%2fconditionally-execute-a-command-if-a-specific-package-is-loaded%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

            Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

            Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

            Nicolae Petrescu-Găină Cuprins Biografie | Opera | In memoriam | Varia | Controverse, incertitudini...