Conditionally execute a command if a specific package is loadedHow 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)?

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

An Algorithm Which Schedules Your Life

What is the lowest voltage that a microcontroller can successfully read on the analog pin?

How much damage can be done just by heating matter?

Conditionally execute a command if a specific package is loaded

Did Apollo carry and use WD40?

Where are they calling from?

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

My 15 year old son is gay. How do I express my feelings about this?

Is it impolite to ask for halal food when traveling to and in Thailand?

Transforming 2D points on to a regular grid or lattice

Find missing number in the transformation

Can this word order be rearranged?

Is it true that, "just ten trading days represent 63 per cent of the returns of the past 50 years"?

I reverse the source code, you negate the input!

Going to France with limited French for a day

Hiking with a mule or two?

A high quality contribution but an annoying error is present in my published article

Do the villains know Batman has no superpowers?

Sparse columns, cpu time & filtered indexes

Non-cadential use of 6/4 chord

Hilbert's hotel, why can't I repeat it infinitely many times?

Is it more effective to add yeast before or after kneading?

Do all creatures have souls?



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:



documentclassarticle
usepackageexpl3
csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
usepackagehyperxmp
usepackagehyperref


% 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
% %

begindocument
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"

enddocument









share|improve this question
























  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    8 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 hours ago











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

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 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:



documentclassarticle
usepackageexpl3
csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
usepackagehyperxmp
usepackagehyperref


% 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
% %

begindocument
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"

enddocument









share|improve this question
























  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    8 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 hours ago











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

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 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:



documentclassarticle
usepackageexpl3
csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
usepackagehyperxmp
usepackagehyperref


% 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
% %

begindocument
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"

enddocument









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:



documentclassarticle
usepackageexpl3
csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
usepackagehyperxmp
usepackagehyperref


% 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
% %

begindocument
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"

enddocument






packages conditionals condition






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 9 hours ago









KrishnaKrishna

1,2666 silver badges20 bronze badges




1,2666 silver badges20 bronze badges















  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    8 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 hours ago











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

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 hours ago

















  • @UlrikeFischer. Breaks and complains loudly with error messages

    – Krishna
    8 hours ago











  • did you use makeatletter?

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 hours ago











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

    – Ulrike Fischer
    8 hours ago











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

    – Krishna
    8 hours ago
















@UlrikeFischer. Breaks and complains loudly with error messages

– Krishna
8 hours ago





@UlrikeFischer. Breaks and complains loudly with error messages

– Krishna
8 hours ago













did you use makeatletter?

– Ulrike Fischer
8 hours ago





did you use makeatletter?

– Ulrike Fischer
8 hours ago













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

– Krishna
8 hours ago





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

– Krishna
8 hours ago













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

– Ulrike Fischer
8 hours ago





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

– Ulrike Fischer
8 hours ago













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

– Krishna
8 hours ago





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

– Krishna
8 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.



documentclassarticle
usepackageexpl3
usepackageltxcmds
%csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
usepackagehyperxmp
usepackagehyperref

makeatletter
% this commented paragraph is conceptual & needs fixing through a solution from this forum
@ifpackageloadedgitver
hypersetuppdfversionid = gitVer

hypersetuppdfversionid =

makeatother

begindocument
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@ifpackageloadedgitverversionBoxgitver not loaded
makeatother

enddocument





share|improve this answer
































    5
















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



    providecommandgitVer
    providecommandVersionBox[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
      8 hours ago











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

      – egreg
      8 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.



    documentclassarticle
    usepackageexpl3
    usepackageltxcmds
    %csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
    usepackagehyperxmp
    usepackagehyperref

    makeatletter
    % this commented paragraph is conceptual & needs fixing through a solution from this forum
    @ifpackageloadedgitver
    hypersetuppdfversionid = gitVer

    hypersetuppdfversionid =

    makeatother

    begindocument
    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@ifpackageloadedgitverversionBoxgitver not loaded
    makeatother

    enddocument





    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.



      documentclassarticle
      usepackageexpl3
      usepackageltxcmds
      %csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
      usepackagehyperxmp
      usepackagehyperref

      makeatletter
      % this commented paragraph is conceptual & needs fixing through a solution from this forum
      @ifpackageloadedgitver
      hypersetuppdfversionid = gitVer

      hypersetuppdfversionid =

      makeatother

      begindocument
      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@ifpackageloadedgitverversionBoxgitver not loaded
      makeatother

      enddocument





      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.



        documentclassarticle
        usepackageexpl3
        usepackageltxcmds
        %csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
        usepackagehyperxmp
        usepackagehyperref

        makeatletter
        % this commented paragraph is conceptual & needs fixing through a solution from this forum
        @ifpackageloadedgitver
        hypersetuppdfversionid = gitVer

        hypersetuppdfversionid =

        makeatother

        begindocument
        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@ifpackageloadedgitverversionBoxgitver not loaded
        makeatother

        enddocument





        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.



        documentclassarticle
        usepackageexpl3
        usepackageltxcmds
        %csname sys_if_shell_unrestricted:Tendcsnameusepackagegitver
        usepackagehyperxmp
        usepackagehyperref

        makeatletter
        % this commented paragraph is conceptual & needs fixing through a solution from this forum
        @ifpackageloadedgitver
        hypersetuppdfversionid = gitVer

        hypersetuppdfversionid =

        makeatother

        begindocument
        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@ifpackageloadedgitverversionBoxgitver not loaded
        makeatother

        enddocument






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 8 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



            providecommandgitVer
            providecommandVersionBox[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
              8 hours ago











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

              – egreg
              8 hours ago
















            5
















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



            providecommandgitVer
            providecommandVersionBox[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
              8 hours ago











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

              – egreg
              8 hours ago














            5














            5










            5









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



            providecommandgitVer
            providecommandVersionBox[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



            providecommandgitVer
            providecommandVersionBox[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 8 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
              8 hours ago











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

              – egreg
              8 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
              8 hours ago











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

              – egreg
              8 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
            8 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
            8 hours ago













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

            – egreg
            8 hours ago






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

            – egreg
            8 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

            Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

            Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

            Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її