«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.
% \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 \]| Comando | Glifo | Significado / uso |
|---|---|---|
\pm | ± | más menos; x = a \pm b |
\mp | ∓ | menos 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 |
\cdot | ⋅ | punto de multiplicación por defecto; producto escalar |
\ast | ∗ | convolución y similares; idéntico a * en modo matemático |
\star | ⋆ | estrella de cinco puntas; a menudo un producto definido ad hoc |
\circ | ∘ | composición de funciones; g \circ f |
\bullet | ∙ | punto relleno; contrapartida más pesada de \circ |
\diamond | ⋄ | operador 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$.
% 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 \]| Comando | Clase que impone | Espacio por lado (texto a 10 pt) |
|---|---|---|
\mathbin | operador binario | 2,22 pt (\medmuskip = 4mu) |
\mathrel | relación | 2,78 pt (\thickmuskip = 5mu) |
\mathord | sí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.
| Comando | Glifo | Paquete | Significado / uso |
|---|---|---|---|
\oplus | ⊕ | — | suma directa; operaciones aditivas |
\ominus | ⊖ | — | menos circulado |
\otimes | ⊗ | — | producto tensorial; operaciones multiplicativas |
\oslash | ⊘ | — | barra circulada; división elemento a elemento |
\odot | ⊙ | — | producto de Hadamard o elemento a elemento |
\bigcirc | ◯ | — | círculo grande |
\circledast | ⊛ | amssymb | asterisco circulado |
\circledcirc | ⊚ | amssymb | anillo circulado |
\boxplus | ⊞ | amssymb | más enmarcado |
\boxminus | ⊟ | amssymb | menos enmarcado |
\boxtimes | ⊠ | amssymb | por enmarcado |
\boxdot | ⊡ | amssymb | punto enmarcado |
% 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 (∖).
| Comando | Glifo | Paquete | Significado / uso |
|---|---|---|---|
\cap | ∩ | — | intersección |
\cup | ∪ | — | unión |
\uplus | ⊎ | — | suma de multiconjuntos; unión disjunta |
\sqcap | ⊓ | — | ínfimo en un retículo |
\sqcup | ⊔ | — | supremo en un retículo |
\wedge | ∧ | — | y lógico, o ínfimo; alias \land |
\vee | ∨ | — | o lógico, o supremo; alias \lor |
\setminus | ∖ | — | diferencia de conjuntos; \backslash no sirve |
\wr | ≀ | — | producto orlado |
\smallsetminus | ∖ | amssymb | diferencia de conjuntos más fina |
\Cap | ⋒ | amssymb | intersección doble |
\Cup | ⋓ | amssymb | unión doble |
% 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.
| Comando | Glifo | Paquete | Significado / uso |
|---|---|---|---|
\amalg | ⨿ | — | coproducto; unión disjunta |
\dagger | † | — | daga; adjunta o traspuesta conjugada |
\ddagger | ‡ | — | doble daga |
\triangleleft | ◁ | — | triángulo izquierdo; subgrupos normales, etc. |
\triangleright | ▷ | — | triángulo derecho; acciones de grupo, etc. |
\dotplus | ∔ | amssymb | más con punto |
\intercal | ⊺ | amssymb | marca de traspuesta en superíndice |
\ltimes | ⋉ | amssymb | producto semidirecto por la izquierda |
\rtimes | ⋊ | amssymb | producto semidirecto por la derecha |
\divideontimes | ⋇ | amssymb | signo de multiplicación con puntos |
\lhd | ◁ | latexsym / amssymb | triángulo izquierdo más grueso; no disponible en LaTeX a secas |
\rhd | ▷ | latexsym / amssymb | triá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.