56

I would like to have some variables for showing or hiding text in Latex.

For example, I would like to have two versions of a document. A short version and a long version by changing a variable at the top of the latex document.

For example:

I want to set a variable long - true

and in the text I would like to use if long == true show text (long version) else if false do not show the text (short version).

Any examples?

lockstep
  • 250,273
glarkou
  • 711

3 Answers3

63
\documentclass{article} 
\usepackage{lipsum}    
\newif\iflong

\begin{document}

  \longtrue   
  \iflong \lipsum[1] \else short version \fi 

  \longfalse
  \iflong \lipsum[1] \else short version \fi 
\end{document}   

With ifthen

\documentclass{article} 
\usepackage{ifthen}
\newboolean{long}   

\begin{document}

\setboolean{long}{false}   
\ifthenelse{\boolean{long}}{long version}{short version} 

\setboolean{long}{true}
\ifthenelse{\boolean{long}}{long version}{short version}  
\end{document} 
Alain Matthes
  • 95,075
18

I second Herbert on using the comment package. :) Here's a possible solution with etoolbox and \iftoggle{<name>}{<true>}{<false>}:

\documentclass{article}

\usepackage{etoolbox}

\providetoggle{long}
\settoggle{long}{true}

\begin{document}

\iftoggle{long}{Overhead the albatross hangs motionless upon the air.}%
{And deep beneath the rolling waves in labyrinths of coral caves.}

\end{document}

There's also \nottoggle{<name>}{<not true>}{<not false>} which negates the test.

Paulo Cereda
  • 44,220
6

A solution which does not require loading a package is

\documentclass{article}

\newif\iflong \longtrue % switch to false in short version \newcommand{\inLongVersion}[1]{\iflong #1\fi}

\begin{document}

Overhead the albatross hangs motionless upon the air. % \inLongVersion{And deep beneath the rolling waves in labyrinths of coral caves.}

\end{document}

CampanIgnis
  • 4,624