Operadores binarios

«No me gusta × como signo de la multiplicación, porque se confunde con demasiada facilidad con la x»: así escribía Leibniz a Johann Bernoulli en 1698. Dudar en LaTeX entre \times y \cdot —dos de los operadores binarios que recoge esta página— es tomar partido en una disputa de más de tres siglos. El verdadero asunto, sin embargo, no es el dibujo del signo. TeX clasifica cada símbolo de una fórmula en una clase, y solo esa clase fija el espacio de alrededor: por eso el + de $+1$ y el de $a+1$ se componen con anchuras distintas pese a ser el mismo carácter. Esta página repasa los operadores —\times, \div, \cdot, \pm, \oplus, \cup, \setminus y los demás—, señala cuáles exigen amssymb y muestra cómo imponerse a TeX con \mathbin cuando se equivoca de clase.

\cdot o \times: qué signo de multiplicación usar

Por defecto, \cdot (⋅). El punto centrado sirve para multiplicar números o magnitudes dentro de una fórmula; \times (×) queda reservado al producto vectorial, al producto cartesiano, a las dimensiones (matrices 3 \times 3) y a las potencias de diez (6.02 \times 10^{23}). Este reparto nace directamente de la queja de Leibniz. Fue William Oughtred quien llevó el × a la imprenta en la Clavis Mathematicae, publicada en Londres en 1631; pero en álgebra x era además el nombre más corriente de una incógnita. Por eso, en su carta del 29 de julio de 1698, Leibniz descartó la cruz y recomendó un punto intercalado. Ganó él: de ahí que el × de la multiplicación casi haya desaparecido de la literatura matemática moderna.

El signo de división \div (÷) tiene una historia paralela. El símbolo se llama óbelo y el primero en usarlo para la división fue Johann Rahn, en la Teutsche Algebra de 1659. La norma ISO 80000-2, que fija la notación matemática en ciencia y tecnología, prescribe sin embargo la barra / o la raya de fracción para la división y los dos puntos : para las razones, y señala que ÷ no debería emplearse. La conclusión práctica es sencilla: en un artículo o un documento técnico se escribe \frac{a}{b}, no \div. A \div apenas le queda sitio en la enseñanza elemental y en las calculadoras. Otra trampa: sustituir \cdot por un punto, como en a.b, no funciona. TeX no considera el punto un operador y no añade espacio alguno —medido en un documento a 10 pt, $a.b$ da 12,36 pt frente a 16,80 pt de $a \cdot b$—, de modo que se lee como una coma decimal y no como un producto. Teclear * directamente, en cambio, no da ningún problema: en modo matemático * es exactamente el mismo operador binario que \ast y se compone igual.

latex
% \cdot for ordinary products; \times for cross products, dimensions, powers of ten
\[ 2 \cdot 3 = 6, \qquad \mathbf{u} \times \mathbf{v}, \qquad 6.02 \times 10^{23} \]
% a period is not a multiplication dot: it gets no operator spacing
\[ a.b \qquad a \cdot b \]
% in scientific writing prefer a fraction to the obelus
\[ \frac{a}{b} \qquad a \div b \]
ComandoGlifoSignificado / uso
\pm±más menos; x = a \pm b
\mpmenos más; signo opuesto a \pm
\times×producto vectorial, producto cartesiano, dimensiones, potencias de diez
\div÷el óbelo; en escritura científica se prefiere \frac
\cdotpunto de multiplicación por defecto; producto escalar
\astconvolución y similares; idéntico a * en modo matemático
\starestrella de cinco puntas; a menudo un producto definido ad hoc
\circcomposición de funciones; g \circ f
\bulletpunto relleno; contrapartida más pesada de \circ
\diamondoperador rombo

Por qué el + de $+1$ se compone apretado

Un operador binario une lo que queda a un lado y a otro; si por un lado no hay nada que unir, TeX concluye que no se trata de un operador binario. Un + a la cabeza de una fórmula queda degradado a signo —unario— y no recibe espacio alguno. Los números lo muestran con claridad: en un documento a 10 pt, $+1$ mide 12,78 pt; basta anteponerle un grupo vacío, escribiendo ${}+1$, para que el + disponga de un operando a la izquierda, vuelva a ser un operador binario de pleno derecho y la anchura suba a 17,22 pt. Los 4,44 pt de diferencia se reparten en 2,22 pt por lado. Esos 2,22 pt proceden del parámetro \medmuskip (valor por defecto 4mu plus 2mu minus 4mu), más estrecho que el \thickmuskip (5mu plus 5mu, es decir 2,78 pt por lado) reservado a las relaciones; de ahí que $a=b$ quede más holgado que $a+b$. Por muchos espacios que se tecleen en la fuente, nada de esto cambia. Solo la clase decide el espaciado.

El mecanismo también puede volverse en contra, porque las llaves destruyen la clase de un símbolo. $a\times b$ mide 21,80 pt, pero basta escribir $a{\times}b$ para que baje a 17,36 pt: lo que queda dentro de un grupo se trata como un único símbolo ordinario (clase Ord) y olvida que alguna vez fue un operador binario. Cuando una macro propia produce un símbolo al que misteriosamente le falta espacio, la causa es casi siempre esa. El remedio es \mathbin{...}: $a\mathbin{\times}b$ vuelve a medir 21,80 pt, exactamente igual que $a\times b$ sin más. En sentido contrario, \mathord{...} elimina el espacio y \mathrel{...} compone el símbolo como relación: $a\mathrel{\times}b$ da 22,91 pt, justo la anchura de $a=b$.

latex
% a leading + has nothing to bind: TeX makes it a sign and sets it tight
% an empty group gives it a left operand and the medium space comes back
\[ +1 \qquad {}+1 \]
% braces strip the class; \mathbin puts it back, \mathrel makes it a relation
\[ a \times b \qquad a {\times} b \qquad a \mathbin{\times} b \qquad a \mathrel{\times} b \]
% always declare the class when you define an operator of your own
\newcommand{\op}{\mathbin{\triangle}}
\[ x \op y \]
ComandoClase que imponeEspacio por lado (texto a 10 pt)
\mathbinoperador binario2,22 pt (\medmuskip = 4mu)
\mathrelrelación2,78 pt (\thickmuskip = 5mu)
\mathordsímbolo ordinario (Ord)ninguno; el mismo resultado que encerrar entre llaves

Operadores circulados y enmarcados: cuáles necesitan amssymb

Todos los operadores circulados son LaTeX estándar; todos los enmarcados necesitan amssymb. Con esa sola frase queda resuelto lo esencial. La suma directa \oplus (⊕), el producto tensorial \otimes (⊗), \odot (⊙) para el producto de Hadamard y sus parientes, junto con \ominus, \oslash y \bigcirc, funcionan sin cargar paquete alguno. La familia enmarcada —\boxplus (⊞), \boxminus (⊟), \boxtimes (⊠), \boxdot (⊡)— y los añadidos de la AMS a la familia circulada, \circledast (⊛) y \circledcirc (⊚), presuponen en cambio \usepackage{amssymb} en el preámbulo. Si falta, la compilación se detiene en ! Undefined control sequence. En cuanto a la elección, rige una convención: ⊕ para una operación aditiva, ⊗ para una multiplicativa. La teoría de categorías y la de representaciones siguen esa lectura casi sin excepción.

ComandoGlifoPaqueteSignificado / uso
\oplussuma directa; operaciones aditivas
\ominusmenos circulado
\otimesproducto tensorial; operaciones multiplicativas
\oslashbarra circulada; división elemento a elemento
\odotproducto de Hadamard o elemento a elemento
\bigcirccírculo grande
\circledastamssymbasterisco circulado
\circledcircamssymbanillo circulado
\boxplusamssymbmás enmarcado
\boxminusamssymbmenos enmarcado
\boxtimesamssymbpor enmarcado
\boxdotamssymbpunto enmarcado
latex
% circled operators are standard; boxed ones come from amssymb
\usepackage{amssymb}
% ...
\[ V \oplus W, \qquad u \otimes v, \qquad A \boxplus B \]

Las versiones grandes de las mismas formas —\bigoplus (⨁), \bigotimes, \bigodot, \biguplus— no son operadores binarios. Pertenecen, junto con \sum, a la clase de los operadores grandes: reciben límites encima y debajo y cambian de tamaño entre fórmula en línea y fórmula aparte. Agrandar \oplus con \Large o similar coloca los límites en el lugar equivocado; hay que emplear \bigoplus. La página dedicada a sumas, integrales y operadores grandes lo trata en detalle.

Operadores de conjuntos y retículos: \cup, \cap, \setminus

Todo lo de esta sección es LaTeX estándar; no hace falta ningún paquete. Intersección \cap (∩), unión \cup (∪), suma de multiconjuntos \uplus (⊎), diferencia \setminus (∖). En retículos y conjuntos ordenados aparecen además las formas cuadradas \sqcap (⊓) y \sqcup (⊔); en lógica, \wedge (∧) y \vee (∨), que llevan los alias \land y \lor. Los glifos son idénticos: la única diferencia es que los nombres lógicos se leen mejor en un contexto lógico. El accidente más frecuente aquí consiste en escribir una diferencia de conjuntos con \backslash. Esa orden es un símbolo ordinario (clase Ord) y por tanto no recibe el espaciado de operador binario: medido a 10 pt, $A \backslash B$ da 20,59 pt frente a 25,03 pt de $A \setminus B$, es decir 2,22 pt menos por lado. Para una diferencia de conjuntos, siempre \setminus. Con amssymb cargado se dispone además del más fino \smallsetminus (∖).

ComandoGlifoPaqueteSignificado / uso
\capintersección
\cupunión
\uplussuma de multiconjuntos; unión disjunta
\sqcapínfimo en un retículo
\sqcupsupremo en un retículo
\wedgey lógico, o ínfimo; alias \land
\veeo lógico, o supremo; alias \lor
\setminusdiferencia de conjuntos; \backslash no sirve
\wrproducto orlado
\smallsetminusamssymbdiferencia de conjuntos más fina
\Capamssymbintersección doble
\Cupamssymbunión doble
latex
% a set difference needs \setminus, not \backslash
\[ A \setminus B \qquad A \cup (B \cap C) \]
% \land and \lor are aliases of \wedge and \vee
\[ p \wedge q \iff p \land q \]

Los demás operadores y el error \lhd not provided in base LaTeX2e

Lo que queda es un conjunto heterogéneo, pero cada signo se gana su sitio. El coproducto o unión disjunta \amalg (⨿); la daga \dagger (†) y la doble daga \ddagger (‡) para adjuntos y duales; y los triángulos \triangleleft (◁) y \triangleright (▷) para subgrupos normales y acciones, todos en LaTeX estándar. A ellos se suman los habituales de amssymb: los productos semidirectos \ltimes (⋉) y \rtimes (⋊) de la teoría de grupos, \intercal (⊺) para una traspuesta, el \dotplus (∔) con punto y \divideontimes (⋇). Cualquier documento de álgebra acabará necesitando un producto semidirecto, así que poner \usepackage{amssymb} en el preámbulo desde el principio resulta el camino más corto.

ComandoGlifoPaqueteSignificado / uso
\amalg⨿coproducto; unión disjunta
\daggerdaga; adjunta o traspuesta conjugada
\ddaggerdoble daga
\trianglelefttriángulo izquierdo; subgrupos normales, etc.
\trianglerighttriángulo derecho; acciones de grupo, etc.
\dotplusamssymbmás con punto
\intercalamssymbmarca de traspuesta en superíndice
\ltimesamssymbproducto semidirecto por la izquierda
\rtimesamssymbproducto semidirecto por la derecha
\divideontimesamssymbsigno de multiplicación con puntos
\lhdlatexsym / amssymbtriángulo izquierdo más grueso; no disponible en LaTeX a secas
\rhdlatexsym / amssymbtriángulo derecho más grueso

Las dos últimas filas esconden una trampa. Al teclear \lhd para un signo de subgrupo normal más grueso, el LaTeX escueto se detiene en ! LaTeX Error: Command \lhd not provided in base LaTeX2e. Los nombres \lhd, \rhd, \unlhd y \unrhd solo están reservados en el núcleo; los símbolos residen en otro paquete. Basta con cargar \usepackage{latexsym} o \usepackage{amssymb} para que los cuatro funcionen, y si ya se carga amssymb no hay nada que añadir. A la inversa, si el \triangleleft (◁) estándar resulta suficiente, este error nunca aparece.

Al definir un operador propio conviene recordar la historia de las clases del principio de esta página. Declare la clase de forma explícita, como en \newcommand{\op}{\mathbin{\triangle}}, y a partir de ahí bastará con escribir x \op y: del espacio a ambos lados se ocupa TeX. Una macro que olvida su clase se trata como símbolo ordinario (Ord), y uno acaba intercalando un \, a mano en cada uso. Fijar la clase antes de añadir el símbolo: ese único paso evita casi todos los accidentes de espaciado en torno a los operadores binarios.