TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to debug some LaTeX3 code. To do so I would like to write the value of an internally generated boolean to the terminal, but I don't want to stop the work-flow of the LaTeX run.

For the sake of explanation, let's say the boolean is called


I don't want to do the following:

\bool_show:N \l__my_private_boolean_bool

because that stops everything.

Instead, I would like to do something like the following:

\msg_term:x { Boolean~value~is:~~\use:c {l__my_private_boolean_bool}} 

But what gets sent to the terminal is

Boolean value is: \__my_private_boolean_bool

I was expecting (and hoping) to see

Boolean value is:  false


Boolean value is:  true

Any suggestions?


I've also tried:

\msg_term:x { Boolean~value~is:~~\cs_meaning:c {l__my_private_boolean_bool}} 

But then I get a cryptic


printed to the screen.


This example does what I want, but what I would like to know is whether there is already a native LaTeX3 command that achieves the same thing as my \__ace_show_bool:N

\bool_new:N \l__ace_test_bool
\cs_new:Npn \__ace_show_bool:N #1 {
    \bool_if:nTF { #1 }
        { true }{ false }

\NewDocumentCommand{\testsetbool}{ m }{
    \str_if_eq:nnTF {true}{#1}
            \bool_gset_true:N \l__ace_test_bool
            \bool_gset_false:N \l__ace_test_bool
    \msg_term:x { Boolean~is:~~\__ace_show_bool:N \l__ace_test_bool }


First \testsetbool{true}

Second \testsetbool{false}

Third \testsetbool{true}
share|improve this question
While code snippets are useful in explanations, it is always best to compose a fully compilable MWE that illustrates the problem including the \documentclass and the appropriate packages so that those trying to help don't have to recreate it. – Peter Grill Jan 31 '13 at 3:41
Related Question: Using \typeout behaviour different with \newtoks vs. \def. – Peter Grill Jan 31 '13 at 3:41
@PeterGrill. Thanks for the link. But, I want to know how to do this in LaTeX3. – A.Ellett Jan 31 '13 at 3:48
up vote 10 down vote accepted

LaTeX3's bool data type is not implemented by simply storing true or false in a macro, and so you can't simple insert the variable name and expect it to print. Indeed, over time the underlying implementation has changed since there are alternative approaches with subtly-different benefits/issues. As such, the only 'correct' way to use them is in conditionals: inside \bool_show:N that is exactly what happens. So if you want to print the value of a bool, or store it inside some other variable, you need a conditional

\bool_if:NTF \l_my_bool
  { TRUE }
  { FALSE }
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.