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;
}
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
add a comment
|
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
@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. theltxcmds
package worked great for me. Thank you!
– Krishna
9 hours ago
add a comment
|
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
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
packages conditionals condition
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. theltxcmds
package worked great for me. Thank you!
– Krishna
9 hours ago
add a comment
|
@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. theltxcmds
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
add a comment
|
2 Answers
2
active
oldest
votes
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}
add a comment
|
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.
thank you. It worked for me. However, I think theltxcmds
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
add a comment
|
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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}
add a comment
|
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}
add a comment
|
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}
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}
answered 9 hours ago
StrongBadStrongBad
13.6k6 gold badges50 silver badges107 bronze badges
13.6k6 gold badges50 silver badges107 bronze badges
add a comment
|
add a comment
|
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.
thank you. It worked for me. However, I think theltxcmds
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
add a comment
|
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.
thank you. It worked for me. However, I think theltxcmds
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
add a comment
|
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.
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.
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 theltxcmds
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
add a comment
|
thank you. It worked for me. However, I think theltxcmds
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
add a comment
|
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
@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