How to have “preprocessor” flags in LaTeX











up vote
0
down vote

favorite












C programmers often use constructs like



#ifdef foo
printf("foo is defined ");
#endif
#ifndef foo
printf("foo is not defined ");
#endif


to select certain code-paths during the compilation process, by passing the compiler flag like -Dfoo or just sticking a #define foo 0 somewhere in the code.



Is this possible in LaTeX too? So I am looking for something like



ifdef foo{
short summary, tldr
}
ifndef foo{
long explanation
}


This can be particularly helpful for producing short summary documents from existing TeX files containing long descriptions. I would like to be able to pass
something similar to -Dfoo as a compiler flag, or just define the foo somewhere near the top of the Latex file, just as I would do in the C case.










share|improve this question




















  • 3




    Possible duplicate of Conditional typesetting / build
    – Henri Menke
    1 hour ago















up vote
0
down vote

favorite












C programmers often use constructs like



#ifdef foo
printf("foo is defined ");
#endif
#ifndef foo
printf("foo is not defined ");
#endif


to select certain code-paths during the compilation process, by passing the compiler flag like -Dfoo or just sticking a #define foo 0 somewhere in the code.



Is this possible in LaTeX too? So I am looking for something like



ifdef foo{
short summary, tldr
}
ifndef foo{
long explanation
}


This can be particularly helpful for producing short summary documents from existing TeX files containing long descriptions. I would like to be able to pass
something similar to -Dfoo as a compiler flag, or just define the foo somewhere near the top of the Latex file, just as I would do in the C case.










share|improve this question




















  • 3




    Possible duplicate of Conditional typesetting / build
    – Henri Menke
    1 hour ago













up vote
0
down vote

favorite









up vote
0
down vote

favorite











C programmers often use constructs like



#ifdef foo
printf("foo is defined ");
#endif
#ifndef foo
printf("foo is not defined ");
#endif


to select certain code-paths during the compilation process, by passing the compiler flag like -Dfoo or just sticking a #define foo 0 somewhere in the code.



Is this possible in LaTeX too? So I am looking for something like



ifdef foo{
short summary, tldr
}
ifndef foo{
long explanation
}


This can be particularly helpful for producing short summary documents from existing TeX files containing long descriptions. I would like to be able to pass
something similar to -Dfoo as a compiler flag, or just define the foo somewhere near the top of the Latex file, just as I would do in the C case.










share|improve this question















C programmers often use constructs like



#ifdef foo
printf("foo is defined ");
#endif
#ifndef foo
printf("foo is not defined ");
#endif


to select certain code-paths during the compilation process, by passing the compiler flag like -Dfoo or just sticking a #define foo 0 somewhere in the code.



Is this possible in LaTeX too? So I am looking for something like



ifdef foo{
short summary, tldr
}
ifndef foo{
long explanation
}


This can be particularly helpful for producing short summary documents from existing TeX files containing long descriptions. I would like to be able to pass
something similar to -Dfoo as a compiler flag, or just define the foo somewhere near the top of the Latex file, just as I would do in the C case.







macros conditionals






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 1 hour ago









Henri Menke

68.4k7153257




68.4k7153257










asked 2 hours ago









smilingbuddha

80741015




80741015








  • 3




    Possible duplicate of Conditional typesetting / build
    – Henri Menke
    1 hour ago














  • 3




    Possible duplicate of Conditional typesetting / build
    – Henri Menke
    1 hour ago








3




3




Possible duplicate of Conditional typesetting / build
– Henri Menke
1 hour ago




Possible duplicate of Conditional typesetting / build
– Henri Menke
1 hour ago










2 Answers
2






active

oldest

votes

















up vote
1
down vote



accepted










You can use ifdefined to check whether a macro is defined. To check whether a macro is not defined, reverse the conditional by prefixing unless.



documentclass{article}
%newcommandfoo{}
begin{document}

ifdefinedfoo
short summary, tldr
fi
unlessifdefinedfoo
long explanation
fi

end{document}





share|improve this answer






























    up vote
    0
    down vote













    In ConTeXt MkIV you can achieve this behaviour using Modes.



    starttext

    startmode[foo]
    short summary, tldr
    stopmode
    startnotmode[foo]
    long explanation
    stopnotmode

    stoptext


    The great thing about ConTeXt modes is that you can switch them on from the command line of the context program.



    $ context --mode=foo test.mkvi





    share|improve this answer





















      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',
      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%2f464233%2fhow-to-have-preprocessor-flags-in-latex%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








      up vote
      1
      down vote



      accepted










      You can use ifdefined to check whether a macro is defined. To check whether a macro is not defined, reverse the conditional by prefixing unless.



      documentclass{article}
      %newcommandfoo{}
      begin{document}

      ifdefinedfoo
      short summary, tldr
      fi
      unlessifdefinedfoo
      long explanation
      fi

      end{document}





      share|improve this answer



























        up vote
        1
        down vote



        accepted










        You can use ifdefined to check whether a macro is defined. To check whether a macro is not defined, reverse the conditional by prefixing unless.



        documentclass{article}
        %newcommandfoo{}
        begin{document}

        ifdefinedfoo
        short summary, tldr
        fi
        unlessifdefinedfoo
        long explanation
        fi

        end{document}





        share|improve this answer

























          up vote
          1
          down vote



          accepted







          up vote
          1
          down vote



          accepted






          You can use ifdefined to check whether a macro is defined. To check whether a macro is not defined, reverse the conditional by prefixing unless.



          documentclass{article}
          %newcommandfoo{}
          begin{document}

          ifdefinedfoo
          short summary, tldr
          fi
          unlessifdefinedfoo
          long explanation
          fi

          end{document}





          share|improve this answer














          You can use ifdefined to check whether a macro is defined. To check whether a macro is not defined, reverse the conditional by prefixing unless.



          documentclass{article}
          %newcommandfoo{}
          begin{document}

          ifdefinedfoo
          short summary, tldr
          fi
          unlessifdefinedfoo
          long explanation
          fi

          end{document}






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 1 hour ago

























          answered 1 hour ago









          Henri Menke

          68.4k7153257




          68.4k7153257






















              up vote
              0
              down vote













              In ConTeXt MkIV you can achieve this behaviour using Modes.



              starttext

              startmode[foo]
              short summary, tldr
              stopmode
              startnotmode[foo]
              long explanation
              stopnotmode

              stoptext


              The great thing about ConTeXt modes is that you can switch them on from the command line of the context program.



              $ context --mode=foo test.mkvi





              share|improve this answer

























                up vote
                0
                down vote













                In ConTeXt MkIV you can achieve this behaviour using Modes.



                starttext

                startmode[foo]
                short summary, tldr
                stopmode
                startnotmode[foo]
                long explanation
                stopnotmode

                stoptext


                The great thing about ConTeXt modes is that you can switch them on from the command line of the context program.



                $ context --mode=foo test.mkvi





                share|improve this answer























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  In ConTeXt MkIV you can achieve this behaviour using Modes.



                  starttext

                  startmode[foo]
                  short summary, tldr
                  stopmode
                  startnotmode[foo]
                  long explanation
                  stopnotmode

                  stoptext


                  The great thing about ConTeXt modes is that you can switch them on from the command line of the context program.



                  $ context --mode=foo test.mkvi





                  share|improve this answer












                  In ConTeXt MkIV you can achieve this behaviour using Modes.



                  starttext

                  startmode[foo]
                  short summary, tldr
                  stopmode
                  startnotmode[foo]
                  long explanation
                  stopnotmode

                  stoptext


                  The great thing about ConTeXt modes is that you can switch them on from the command line of the context program.



                  $ context --mode=foo test.mkvi






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 1 hour ago









                  Henri Menke

                  68.4k7153257




                  68.4k7153257






























                      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.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • 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%2f464233%2fhow-to-have-preprocessor-flags-in-latex%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

                      Accessing regular linux commands in Huawei's Dopra Linux

                      Can't connect RFCOMM socket: Host is down

                      Kernel panic - not syncing: Fatal Exception in Interrupt