
Para asegurar el uso correcto de los nuevos comandos que solo se usarán en modo matemático, he introducido un mathcommand
comando que verifica el modo matemático mediante \ifmmode
.
Ahora quiero usar talcomando matemático en el título de una sección, y aparece la advertencia del entorno matemático aunque el comando se use en modo matemático:
\documentclass{scrbook}
% provide mathcommand environment
\newcommand{\assuremath}{%
\relax\ifmmode\else\message{LaTeX Warning: Mathmode command used outside of math mode on input line \the\inputlineno}\fi
}
\newcommand{\newmathcommand}[2]{\newcommand{#1}{#2\assuremath}}
\newcommand{\renewmathcommand}[2]{\renewcommand{#1}{#2\assuremath}}
% define some mathcommand
\newmathcommand{\someMathCommand}{e^x}
\begin{document}
% use mathcommand in a caption
\section{I love $\someMathCommand$}
\end{document}
No estoy familiarizado con los mecanismos del modo matemático en los títulos de las secciones. Supongo que esa es la razón por la cual ocurre el problema...
Respuesta1
Esto es lo que sucede.
El título de una sección es un argumento en movimiento, lo que significa que se almacena en la memoria y se escribe en el .aux
archivo cuando se envía la siguiente página.
Cuando se realiza la operación de escritura, TeX expande las macrossinejecutar comandos; además lo esnoen modo matemático en ese momento (está enNomodo, en realidad). Esto significa que el condicional es falso y \message{...}
se escribe en el .aux
archivo.
Resuelves el problema diciendo
\DeclareRobustCommand{\assuremath}{%
\relax\ifmmode\else\message{LaTeX Warning: Mathmode command used outside of math mode on input line \the\inputlineno}\fi
}