Problema con il nuovo comando
Dato che sto seguendo un corso di algebra lineare, spesso ho bisogno di scrivere M (mxn, K) e lo trovo fastidioso.
Ho provato a definire un comando: \newcommand{\M}[3]{M(#1 \times #2, #3)}ma questo dà uno strano output:
Hoe posso risolvere questo problema? Grazie in anticipo
Risposte
Se definisci
\newcommand{\M}[3]{M(#1 \times #2, #3)}
allora la sintassi di input dovrebbe essere
\M{2}{2}{\mathbb{R}}
e non
\M{2,2,\mathbb{R}}
che effettivamente riproduce lo strano output e, eventualmente, alcuni messaggi di errore.
Esempio:
\documentclass{article}
\usepackage{amsmath,amssymb}
\newcommand{\RR}{\mathbb{R}} % the reals
\newcommand{\M}[3]{M(#1\times #2,#3)}
\begin{document}
Good syntax \verb|\M{2}{2}{\RR}| yields $A\in\M{2}{2}{\RR}$
Bad syntax \verb|\M{2,2,\RR}| yields $A\in\M{2,2,\RR}$
\end{document}
Riesci a far funzionare la sintassi, certamente più semplice? Sì.
\documentclass{article}
\usepackage{amsmath,amssymb}
%\usepackage{xparse}% not needed for LaTeX 2020-10-01 or later
\newcommand{\RR}{\mathbb{R}} % the reals
\NewDocumentCommand{\M}{>{\SplitArgument{2}{,}}m}{\MLONG#1}
\NewDocumentCommand{\MLONG}{mmm}{M(#1\times #2,#3)}
\begin{document}
Good new syntax \verb|\M{2,2,\RR}| yields $A\in\M{2,2,\RR}$
\end{document}
Dov'è il segreto? Il preprocessore \SplitArgument{2}{,}dice a LaTeX di leggere l'argomento, che dovrebbe contenere due virgole, e di passare #1come
{<a>}{<b>}{<c>}
quando l'argomento è <a>,<b>,<c>. Quindi possiamo fornire l'argomento trasformato a \MLONGquello che legge tre argomenti standard.
Come ha detto Campa, dovresti sempre fornire un file MWE
Per il momento, dai un'occhiata
\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\usepackage{mathtools,amsfonts}
\newcommand{\M}[3]{\ensuremath{M(#1 \times #2, #3)}}
\begin{document}
\M{1}{2}{\mathbb{R}}
\end{document}
dando
come previsto.
Come le altre risposte identificate, il problema era che devi scrivere \M{2}{2}{R}per usare la tua macro nel documento.
È comprensibile che tu voglia evitare di scriverlo in questo modo, poiché le parentesi graffe sono difficili da digitare. egreg ha mostrato un modo per ridurre (ma non eliminare) le parentesi graffe con il moderno LaTeX.
Se vuoi usare una sintassi simile a come l'hai scritta nel testo della tua domanda, un altro approccio è la vecchia definizione in stile TeX
\def\M(#1x#2,#3){M(#1 \times #2, \mathbb{#3})}
Quindi puoi scrivere \M(2x2,R)nel tuo documento.