# Is there any way to generate custom errors/warnings in LaTeX?

I want something like \ifmmode\else\GenerateWarning{The command \backslash uzuka is supported only in math mode.}\fi, which is supposed to generate a warning "The command \uzuka is supported only in math mode.". Is there a command or a package with this capacibility?

-

For LaTeX, use the commands described in section 4.9 of clsguide.pdf:

• \PackageWarning and \PackageWarningNoLine if you are writing a package
• \ClassWarning and \ClassWarningNoLine if you are writing a class
• The internal generic version for warnigns is \GenericWarning

The expl3 bundle has another interface for warnings and similar messages, see Part XVII in source3.pdf.

-
I'd add that the expl3 approach has been designed to allow suppression of messages in a selective fashion. Packages such as silence can do the same for LaTeX2e messages but as an 'add on'. –  Joseph Wright Sep 20 '10 at 11:43
@doncherry Thanks, fixed. (It's called l3kernel now instead of expl3.) –  Philipp Dec 9 '12 at 20:52

You can use \typeout{msg}. The command will print msg on the terminal and in the log file.

-

Just use the built-in \errmessage for errors, e.g. \let\GenerateWarning=\errmessage.

The kind of warnings Latex generates are just messages; \let\GenerateWarning=\message will not interrupt the compile. Latex uses the commands \@latex@warning and \@latex@warning@no@lines to create these for its own warnings: you check the source you find in latex.ltx.

-
Yes, that will allow to generate errors. But what about warnings? Is it possible to generate them too? –  fiktor Sep 20 '10 at 11:13
Thanks to search using \errmessage keyword I've found in TeXBook how to output warning. Actually I've found, that my editor (TeXnicCenter 1.0) treats as warnings output lines like "LaTeX Warning: \uzuka used outside of math mode on input line 211", which can be generated using \message{LaTeX Warning: \noexpand\uzuka used outside of math mode on input line \the\inputlineno}. Thank you. –  fiktor Sep 20 '10 at 11:21