Piccola modifica del comando \sqrt

  • Creatore
    Topic
  • #7250
    Up
    0
    Down
    ::


    Salve a tutti… 😀 Vorrei porre alla vostra attenzione una questione abbastanza fine a sè stessa e puramente di carattere estetico, più che altro per imparare qualche rudimento su come si ridefinisce un comando in LaTeX…Da qualche parte ho trovato una porzione di codice che ridefinisce il comando \sqrt in questo modo:
    `% Nuova definizione della radice quadrata:
    % assegna al vecchio comando \sqrt un nuovo nome
    \let\radice\sqrt
    % Ridefinisce il nuovo comando in base al precedente
    \def\sqrt{\mathpalette\DHLhksqrt}
    \def\DHLhksqrt#1#2{\setbox0=\hbox{$#1\radice{#2\,}$}\dimen0=\ht0
    \advance\dimen0-0.2\ht0
    \setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
    {\box0\lower0.4pt\box2}}`
    Il risultato è che il simbolo di radice quadrata è chiuso con un trattino verticale (abbastanza inutile lo sò…). Comunque il codice va bene solo per le radici quadrate, ma nn funziona con radici cubiche, quarte o di ordine superiore…Come posso modificarlo per renderlo parametrico e continuare ad usare il comando \sqrt con la sintassi classica?
    Grazie del vostro tempo… 🙂
    Saluti

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #7251
      Up
      0
      Down
      ::

      Salve a tutti… 😀 Vorrei porre alla vostra attenzione una questione abbastanza fine a sè stessa e puramente di carattere estetico, più che altro per imparare qualche rudimento su come si ridefinisce un comando in LaTeX…Da qualche parte ho trovato una porzione di codice che ridefinisce il comando \sqrt in questo modo:
      `% Nuova definizione della radice quadrata:
      % assegna al vecchio comando \sqrt un nuovo nome
      \let\radice\sqrt
      % Ridefinisce il nuovo comando in base al precedente
      \def\sqrt{\mathpalette\DHLhksqrt}
      \def\DHLhksqrt#1#2{\setbox0=\hbox{$#1\radice{#2\,}$}\dimen0=\ht0
      \advance\dimen0-0.2\ht0
      \setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
      {\box0\lower0.4pt\box2}}`
      Il risultato è che il simbolo di radice quadrata è chiuso con un trattino verticale (abbastanza inutile lo sò…). Comunque il codice va bene solo per le radici quadrate, ma nn funziona con radici cubiche, quarte o di ordine superiore…Come posso modificarlo per renderlo parametrico e continuare ad usare il comando \sqrt con la sintassi classica?
      Grazie del vostro tempo… 🙂
      Saluti

      Proverei con questo:`\renewcommand{\sqrt}[1][]{\def\IRAD{#1}\mathpalette\DHLhksqrt}
      \def\DHLhksqrt#1#2{\setbox0=\hbox{$#1\radice[\IRAD]{#2\,}$}\dimen0=\ht0`
      al posto delle due righe corrispondenti. Non provato.

      Ciao
      Enrico

    • #7252
      Up
      0
      Down
      ::


      Funziona perfettamente!! 😀
      Mi sapresti spiegare cosa fanno le righe di codice scritte?E che differenza c’è con quelle scritte prima?

    • #7253
      Up
      0
      Down
      ::

      Funziona perfettamente!! 😀
      Mi sapresti spiegare cosa fanno le righe di codice scritte?E che differenza c’è con quelle scritte prima?

      A dire il vero non funziona proprio perfettamente, perché non si comporta bene con i comandi \leftroot e \uproot di amsmath. Mi pare di ricordare che esiste un pacchetto che fa la stessa cosa in modo più robusto, ma ritengo che quella piccola appendice sia brutta. Forse perché mi richiama alla memoria la triste distinzione fra radicali aritmetici e algebrici, un’assurdità nata nella mente bacata di certi scrittori di testi per le scuole superiori.

      Ma torniamo alla spiegazione.
      `\let\radice\sqrt`
      dà al comando \radice lo stesso significato di \sqrt (attuale).
      `\def\sqrt{\mathpalette\DHLhksqrt}
      \renewcommand{\sqrt}[1][]{\def\IRAD{#1}\mathpalette\DHLhksqrt}`
      Ho messo sia la prima versione che la seconda. Con la seconda, usi la possibilità di definire un comando con un argomento opzionale, che è più complicato con il comando \def. Poi metto il contenuto dell’argomento opzionale nel comando \IRAD che userò dopo.
      `\def\DHLhksqrt#1#2{\setbox0=\hbox{$#1\radice{#2\,}$}\dimen0=\ht0
      \def\DHLhksqrt#1#2{\setbox0=\hbox{$#1\radice[\IRAD]{#2\,}$}\dimen0=\ht0
      …`
      La differenza è chiara, spero: ho aggiunto a \radice il contenuto dell’argomento opzionale dato a \sqrt. Così, quando scrivi \sqrt[3]{x}, il risultato è come richiesto. Il resto della faccenda è abbastanza complesso e sorvolerei.

      Ciao
      Enrico

    • #7254
      Up
      0
      Down
      ::

      La differenza è chiara, spero: ho aggiunto a \radice il contenuto dell’argomento opzionale dato a \sqrt. Così, quando scrivi \sqrt[3]{x}, il risultato è come richiesto. Il resto della faccenda è abbastanza complesso e sorvolerei.

      Chiarissimo direi… 😀
      Grazie mille per l’aiuto e la spiegazione…

    • #7255
      Jart2276
      Partecipante
        Up
        0
        Down
        ::


        …E se si volesse inserire un indice di radicale più “sostanzioso”?

        Del tipo, io vorrei che la scritta prodotta da

        `
        $ i= \sqrt[\textstyle{2+\frac{7}{12}+\frac{27}{360}}]{\frac{10.478,55}{9.475,13}}-1=0,0385918136 $`

        sia migliore per quanto riguarda l’indice di radicale.
        Già provato con \scritpstyle e \scriptscriptstyle, ma non mi soddisfa affatto

        PS: E’ un problema di matematica finanziaria

      • #7256
        Up
        0
        Down
        ::

        …E se si volesse inserire un indice di radicale più “sostanzioso”?

        Del tipo, io vorrei che la scritta prodotta da

        `
        $ i= \sqrt[\textstyle{2+\frac{7}{12}+\frac{27}{360}}]{\frac{10.478,55}{9.475,13}}-1=0,0385918136 $`

        sia migliore per quanto riguarda l’indice di radicale.
        Già provato con \scritpstyle e \scriptscriptstyle, ma non mi soddisfa affatto

        PS: E’ un problema di matematica finanziaria

        Il segno di radice con la grondaia è orrendo e inutile. Per secoli si è usato senza ammennicoli, perché mai lo si dovrebbe modificare?

        Ciao
        Enrico

      • #7257
        Jart2276
        Partecipante
          Up
          0
          Down
          ::

          In ordinary LATEX the placement of root indices is sometimes not so good:
          `
          \sqrt[\beta]{k}`

          In the amsmath package \leftroot and \uproot allow
          you to adjust the position of the root:

          `\sqrt[\leftroot{-2}\uproot{2}\beta]{k}`

          will move the beta up and to the right. The negative argument used with
          \leftroot moves the to the right. The units are a small amount that is a
          useful size for such adjustments.

          Tratto dalla guida di AMSMATH

      Visualizzazione 6 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top