Re: spazio di puntini

#94403
robitex
Amministratore del forum
    Up
    0
    Down
    ::


    Intendi in modo errato la semantica di \newcommand.

    Con \newcommand ci può essere o non essere un argomento opzionale: se definisco:
    `\newcommand\puntini[1]{…}`
    ottengo una macro con un argomento obbligatorio, invece se definisco:
    `\newcommand\puntini[1][c]{…}`
    ottengo una macro con un argomento facoltativo. L’utente può specificarlo (tra parentesi quadre) o meno.

    Solitamente si hanno comandi con argomenti facoltativi e con argomenti obbligatori, oppure macro con argomenti obbligatori e senza opzionale.
    Mentre il caso di un comando con un argomento facoltativo (senza comando obbligatorio) non è frequente in LaTeX.

    Di solito quindi la seconda definizione la si trova così:
    `\newcommand\puntini[2][c]{…}`
    che vuol dire che \newccomand è in grado di gestire un solo argomento opzionale che assume il valore di default ‘c’ se non interviene l’utente. A quest’ultima macro devo dare un argomento obbligatorio tra graffe ed eventualmente posso modificare l’opzionale:
    `\puntini{mandatory arg}`
    `\puntini[option arg]{mandatory arg}`
    #1 è l’argomento opzionale (ha un valore di default) e #2 è l’argomento obbligatorio.

    Ecco invece l’uso raro con solo un argomento opzionale:
    `\puntini`
    oppure
    `\puntini[optional arg]`

    Da quello che capisco, il tuo primo comando non può funzionare.
    `\newcommand*\puntini[1][c]{%
    \ifmmode
    \makebox[\widthof{$#1$}]{$\dotfill$}%
    \else
    \makebox[\widthof{#1}]{\dotfill}%
    \fi
    }`
    perché definisci un comando con un argomento opzionale ma non obbligatorio, quindi #1 vale ‘c’ se l’untente non lo cambia tra parentesi quadre (uso raro).
    Forse intendi piuttosto qualcosa come:
    `\newcommand*\puntini[2][c]{%
    \ifmmode
    \makebox[\widthof{$#2$}]{$\dotfill$}%
    \else
    \makebox[\widthof{#2}]{\dotfill}%
    \fi
    }`
    Ma in questo caso #1 non verrebbe mai utilizzato.
    R.

    Go to top