How can my LaTeX files detect if they're being compiled on Overleaf?












5















I have a LaTeX file that executes an external shell command to get some information; this works on my local machine but fails on Overleaf. That's okay, not a big deal—if I can wrap the code in an if-then conditional that checks if it's executing on Overleaf.



Problem: how can I make my LaTeX code check if being run on Overleaf?



Clarification added 2017-07-31: I already know how to test for shell escapes, and conditionalize my code appropriately. The problem is not whether shell escapes work; the problem is really about testing for Overleaf versus other environments.










share|improve this question




















  • 1





    surely you don't want o know if it's on overleaf but if shell escape is enabled?, which you can test for the integer value of pdfshellescape or shellescape or in lua status.shell_escape dependin on the tex flavour in use.

    – David Carlisle
    Jul 31 '17 at 7:28











  • No; in fact, shell escapes do work, and I already test for that in my code. But the command involves getting information using git, and this works differently in my local environment versus in Overleaf. I have given up trying to figure out why the command fails. I just want to skip the whole thing when running on Overleaf.

    – mhucka
    Jul 31 '17 at 15:01











  • oh in that case you could shell escape and look at the environment variables, surely overleaf must have some environment variable set with a distinguished value?

    – David Carlisle
    Jul 31 '17 at 15:28











  • That would work, but I have not found anything relevant in their documentation so far. I was hoping someone here would have already done something like this and knew the answer.

    – mhucka
    Jul 31 '17 at 15:31











  • just look at the output of the command env and pick one:-)

    – David Carlisle
    Jul 31 '17 at 15:33
















5















I have a LaTeX file that executes an external shell command to get some information; this works on my local machine but fails on Overleaf. That's okay, not a big deal—if I can wrap the code in an if-then conditional that checks if it's executing on Overleaf.



Problem: how can I make my LaTeX code check if being run on Overleaf?



Clarification added 2017-07-31: I already know how to test for shell escapes, and conditionalize my code appropriately. The problem is not whether shell escapes work; the problem is really about testing for Overleaf versus other environments.










share|improve this question




















  • 1





    surely you don't want o know if it's on overleaf but if shell escape is enabled?, which you can test for the integer value of pdfshellescape or shellescape or in lua status.shell_escape dependin on the tex flavour in use.

    – David Carlisle
    Jul 31 '17 at 7:28











  • No; in fact, shell escapes do work, and I already test for that in my code. But the command involves getting information using git, and this works differently in my local environment versus in Overleaf. I have given up trying to figure out why the command fails. I just want to skip the whole thing when running on Overleaf.

    – mhucka
    Jul 31 '17 at 15:01











  • oh in that case you could shell escape and look at the environment variables, surely overleaf must have some environment variable set with a distinguished value?

    – David Carlisle
    Jul 31 '17 at 15:28











  • That would work, but I have not found anything relevant in their documentation so far. I was hoping someone here would have already done something like this and knew the answer.

    – mhucka
    Jul 31 '17 at 15:31











  • just look at the output of the command env and pick one:-)

    – David Carlisle
    Jul 31 '17 at 15:33














5












5








5


1






I have a LaTeX file that executes an external shell command to get some information; this works on my local machine but fails on Overleaf. That's okay, not a big deal—if I can wrap the code in an if-then conditional that checks if it's executing on Overleaf.



Problem: how can I make my LaTeX code check if being run on Overleaf?



Clarification added 2017-07-31: I already know how to test for shell escapes, and conditionalize my code appropriately. The problem is not whether shell escapes work; the problem is really about testing for Overleaf versus other environments.










share|improve this question
















I have a LaTeX file that executes an external shell command to get some information; this works on my local machine but fails on Overleaf. That's okay, not a big deal—if I can wrap the code in an if-then conditional that checks if it's executing on Overleaf.



Problem: how can I make my LaTeX code check if being run on Overleaf?



Clarification added 2017-07-31: I already know how to test for shell escapes, and conditionalize my code appropriately. The problem is not whether shell escapes work; the problem is really about testing for Overleaf versus other environments.







conditionals overleaf






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jul 31 '17 at 15:08







mhucka

















asked Jul 31 '17 at 4:36









mhuckamhucka

285311




285311








  • 1





    surely you don't want o know if it's on overleaf but if shell escape is enabled?, which you can test for the integer value of pdfshellescape or shellescape or in lua status.shell_escape dependin on the tex flavour in use.

    – David Carlisle
    Jul 31 '17 at 7:28











  • No; in fact, shell escapes do work, and I already test for that in my code. But the command involves getting information using git, and this works differently in my local environment versus in Overleaf. I have given up trying to figure out why the command fails. I just want to skip the whole thing when running on Overleaf.

    – mhucka
    Jul 31 '17 at 15:01











  • oh in that case you could shell escape and look at the environment variables, surely overleaf must have some environment variable set with a distinguished value?

    – David Carlisle
    Jul 31 '17 at 15:28











  • That would work, but I have not found anything relevant in their documentation so far. I was hoping someone here would have already done something like this and knew the answer.

    – mhucka
    Jul 31 '17 at 15:31











  • just look at the output of the command env and pick one:-)

    – David Carlisle
    Jul 31 '17 at 15:33














  • 1





    surely you don't want o know if it's on overleaf but if shell escape is enabled?, which you can test for the integer value of pdfshellescape or shellescape or in lua status.shell_escape dependin on the tex flavour in use.

    – David Carlisle
    Jul 31 '17 at 7:28











  • No; in fact, shell escapes do work, and I already test for that in my code. But the command involves getting information using git, and this works differently in my local environment versus in Overleaf. I have given up trying to figure out why the command fails. I just want to skip the whole thing when running on Overleaf.

    – mhucka
    Jul 31 '17 at 15:01











  • oh in that case you could shell escape and look at the environment variables, surely overleaf must have some environment variable set with a distinguished value?

    – David Carlisle
    Jul 31 '17 at 15:28











  • That would work, but I have not found anything relevant in their documentation so far. I was hoping someone here would have already done something like this and knew the answer.

    – mhucka
    Jul 31 '17 at 15:31











  • just look at the output of the command env and pick one:-)

    – David Carlisle
    Jul 31 '17 at 15:33








1




1





surely you don't want o know if it's on overleaf but if shell escape is enabled?, which you can test for the integer value of pdfshellescape or shellescape or in lua status.shell_escape dependin on the tex flavour in use.

– David Carlisle
Jul 31 '17 at 7:28





surely you don't want o know if it's on overleaf but if shell escape is enabled?, which you can test for the integer value of pdfshellescape or shellescape or in lua status.shell_escape dependin on the tex flavour in use.

– David Carlisle
Jul 31 '17 at 7:28













No; in fact, shell escapes do work, and I already test for that in my code. But the command involves getting information using git, and this works differently in my local environment versus in Overleaf. I have given up trying to figure out why the command fails. I just want to skip the whole thing when running on Overleaf.

– mhucka
Jul 31 '17 at 15:01





No; in fact, shell escapes do work, and I already test for that in my code. But the command involves getting information using git, and this works differently in my local environment versus in Overleaf. I have given up trying to figure out why the command fails. I just want to skip the whole thing when running on Overleaf.

– mhucka
Jul 31 '17 at 15:01













oh in that case you could shell escape and look at the environment variables, surely overleaf must have some environment variable set with a distinguished value?

– David Carlisle
Jul 31 '17 at 15:28





oh in that case you could shell escape and look at the environment variables, surely overleaf must have some environment variable set with a distinguished value?

– David Carlisle
Jul 31 '17 at 15:28













That would work, but I have not found anything relevant in their documentation so far. I was hoping someone here would have already done something like this and knew the answer.

– mhucka
Jul 31 '17 at 15:31





That would work, but I have not found anything relevant in their documentation so far. I was hoping someone here would have already done something like this and knew the answer.

– mhucka
Jul 31 '17 at 15:31













just look at the output of the command env and pick one:-)

– David Carlisle
Jul 31 '17 at 15:33





just look at the output of the command env and pick one:-)

– David Carlisle
Jul 31 '17 at 15:33










2 Answers
2






active

oldest

votes


















5














I think the simplest solution is to determine the home path used by Overleaf and test against that. It's unlikely to match your local home path.



To find Overleaf's home path:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

begin{document}
HOME: texttt{homepath}.

end{document}


Then copy the resulting path and test against that:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

defoverleafhome{/home/whatever}% change as appropriate

begin{document}
ifxhomepathoverleafhome
Overleaf.
else
Not Overleaf.
fi

end{document}





share|improve this answer



















  • 1





    I used this approach. Based on some testing, that path on Overleaf appears to be /home/wl. Thank you very much for this solution.

    – mhucka
    Aug 7 '17 at 20:00











  • Addendum: I examined other environment variables, per David Carlisle's comments at the top. Unfortunately, no other variable other than HOME seemed safe enough to use (in the sense that I couldn't be sure a collaborator would get the expected behavior if the used the files in their local environment).

    – mhucka
    Aug 7 '17 at 20:02



















0














The solution works well with overleaf and a linux machine, but it doesn't work with windows due to the backslash in the path. Under windows (miktex), an



! Undefined control sequence.
l.1 C:Users


error occurs.



I believe in @@input|"kpsewhich --var-value=HOME" the backslashes need to be escaped, but I couldn't figure out how. Does anyone know how to solve this?






share|improve this answer








New contributor




Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • Welcome to TeX.SE! Your question here will not be read by many people, please ask a new one!

    – Kurt
    1 hour ago











  • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review

    – samcarter
    1 hour 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%2f384066%2fhow-can-my-latex-files-detect-if-theyre-being-compiled-on-overleaf%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









5














I think the simplest solution is to determine the home path used by Overleaf and test against that. It's unlikely to match your local home path.



To find Overleaf's home path:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

begin{document}
HOME: texttt{homepath}.

end{document}


Then copy the resulting path and test against that:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

defoverleafhome{/home/whatever}% change as appropriate

begin{document}
ifxhomepathoverleafhome
Overleaf.
else
Not Overleaf.
fi

end{document}





share|improve this answer



















  • 1





    I used this approach. Based on some testing, that path on Overleaf appears to be /home/wl. Thank you very much for this solution.

    – mhucka
    Aug 7 '17 at 20:00











  • Addendum: I examined other environment variables, per David Carlisle's comments at the top. Unfortunately, no other variable other than HOME seemed safe enough to use (in the sense that I couldn't be sure a collaborator would get the expected behavior if the used the files in their local environment).

    – mhucka
    Aug 7 '17 at 20:02
















5














I think the simplest solution is to determine the home path used by Overleaf and test against that. It's unlikely to match your local home path.



To find Overleaf's home path:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

begin{document}
HOME: texttt{homepath}.

end{document}


Then copy the resulting path and test against that:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

defoverleafhome{/home/whatever}% change as appropriate

begin{document}
ifxhomepathoverleafhome
Overleaf.
else
Not Overleaf.
fi

end{document}





share|improve this answer



















  • 1





    I used this approach. Based on some testing, that path on Overleaf appears to be /home/wl. Thank you very much for this solution.

    – mhucka
    Aug 7 '17 at 20:00











  • Addendum: I examined other environment variables, per David Carlisle's comments at the top. Unfortunately, no other variable other than HOME seemed safe enough to use (in the sense that I couldn't be sure a collaborator would get the expected behavior if the used the files in their local environment).

    – mhucka
    Aug 7 '17 at 20:02














5












5








5







I think the simplest solution is to determine the home path used by Overleaf and test against that. It's unlikely to match your local home path.



To find Overleaf's home path:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

begin{document}
HOME: texttt{homepath}.

end{document}


Then copy the resulting path and test against that:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

defoverleafhome{/home/whatever}% change as appropriate

begin{document}
ifxhomepathoverleafhome
Overleaf.
else
Not Overleaf.
fi

end{document}





share|improve this answer













I think the simplest solution is to determine the home path used by Overleaf and test against that. It's unlikely to match your local home path.



To find Overleaf's home path:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

begin{document}
HOME: texttt{homepath}.

end{document}


Then copy the resulting path and test against that:



documentclass{article}

makeatletter
begingroupendlinechar=-1relax
everyeof{noexpand}%
edefx{endgroupdefnoexpandhomepath{%
@@input|"kpsewhich --var-value=HOME" }}x
makeatother

defoverleafhome{/home/whatever}% change as appropriate

begin{document}
ifxhomepathoverleafhome
Overleaf.
else
Not Overleaf.
fi

end{document}






share|improve this answer












share|improve this answer



share|improve this answer










answered Jul 31 '17 at 16:56









Nicola TalbotNicola Talbot

34.4k259105




34.4k259105








  • 1





    I used this approach. Based on some testing, that path on Overleaf appears to be /home/wl. Thank you very much for this solution.

    – mhucka
    Aug 7 '17 at 20:00











  • Addendum: I examined other environment variables, per David Carlisle's comments at the top. Unfortunately, no other variable other than HOME seemed safe enough to use (in the sense that I couldn't be sure a collaborator would get the expected behavior if the used the files in their local environment).

    – mhucka
    Aug 7 '17 at 20:02














  • 1





    I used this approach. Based on some testing, that path on Overleaf appears to be /home/wl. Thank you very much for this solution.

    – mhucka
    Aug 7 '17 at 20:00











  • Addendum: I examined other environment variables, per David Carlisle's comments at the top. Unfortunately, no other variable other than HOME seemed safe enough to use (in the sense that I couldn't be sure a collaborator would get the expected behavior if the used the files in their local environment).

    – mhucka
    Aug 7 '17 at 20:02








1




1





I used this approach. Based on some testing, that path on Overleaf appears to be /home/wl. Thank you very much for this solution.

– mhucka
Aug 7 '17 at 20:00





I used this approach. Based on some testing, that path on Overleaf appears to be /home/wl. Thank you very much for this solution.

– mhucka
Aug 7 '17 at 20:00













Addendum: I examined other environment variables, per David Carlisle's comments at the top. Unfortunately, no other variable other than HOME seemed safe enough to use (in the sense that I couldn't be sure a collaborator would get the expected behavior if the used the files in their local environment).

– mhucka
Aug 7 '17 at 20:02





Addendum: I examined other environment variables, per David Carlisle's comments at the top. Unfortunately, no other variable other than HOME seemed safe enough to use (in the sense that I couldn't be sure a collaborator would get the expected behavior if the used the files in their local environment).

– mhucka
Aug 7 '17 at 20:02











0














The solution works well with overleaf and a linux machine, but it doesn't work with windows due to the backslash in the path. Under windows (miktex), an



! Undefined control sequence.
l.1 C:Users


error occurs.



I believe in @@input|"kpsewhich --var-value=HOME" the backslashes need to be escaped, but I couldn't figure out how. Does anyone know how to solve this?






share|improve this answer








New contributor




Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • Welcome to TeX.SE! Your question here will not be read by many people, please ask a new one!

    – Kurt
    1 hour ago











  • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review

    – samcarter
    1 hour ago
















0














The solution works well with overleaf and a linux machine, but it doesn't work with windows due to the backslash in the path. Under windows (miktex), an



! Undefined control sequence.
l.1 C:Users


error occurs.



I believe in @@input|"kpsewhich --var-value=HOME" the backslashes need to be escaped, but I couldn't figure out how. Does anyone know how to solve this?






share|improve this answer








New contributor




Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • Welcome to TeX.SE! Your question here will not be read by many people, please ask a new one!

    – Kurt
    1 hour ago











  • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review

    – samcarter
    1 hour ago














0












0








0







The solution works well with overleaf and a linux machine, but it doesn't work with windows due to the backslash in the path. Under windows (miktex), an



! Undefined control sequence.
l.1 C:Users


error occurs.



I believe in @@input|"kpsewhich --var-value=HOME" the backslashes need to be escaped, but I couldn't figure out how. Does anyone know how to solve this?






share|improve this answer








New contributor




Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










The solution works well with overleaf and a linux machine, but it doesn't work with windows due to the backslash in the path. Under windows (miktex), an



! Undefined control sequence.
l.1 C:Users


error occurs.



I believe in @@input|"kpsewhich --var-value=HOME" the backslashes need to be escaped, but I couldn't figure out how. Does anyone know how to solve this?







share|improve this answer








New contributor




Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this answer



share|improve this answer






New contributor




Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









answered 2 hours ago









BenBen

1




1




New contributor




Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Ben is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.













  • Welcome to TeX.SE! Your question here will not be read by many people, please ask a new one!

    – Kurt
    1 hour ago











  • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review

    – samcarter
    1 hour ago



















  • Welcome to TeX.SE! Your question here will not be read by many people, please ask a new one!

    – Kurt
    1 hour ago











  • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review

    – samcarter
    1 hour ago

















Welcome to TeX.SE! Your question here will not be read by many people, please ask a new one!

– Kurt
1 hour ago





Welcome to TeX.SE! Your question here will not be read by many people, please ask a new one!

– Kurt
1 hour ago













If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review

– samcarter
1 hour ago





If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review

– samcarter
1 hour 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%2f384066%2fhow-can-my-latex-files-detect-if-theyre-being-compiled-on-overleaf%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