Come definire correttamente un simbolo di relazione?

  • Questo topic ha 8 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 1 mese fa da ori.
  • Creatore
    Topic
  • #76829
    ori
      Up
      0
      Down
      ::


      Salve a tutti,
      avrei bisogno di definire un simbolo di relazione composto da un carattere maiuscolo calligrafico.
      Per fare cio`, ho definito il comando `\newcommand{\rel}[1][R]{\mathrel{\mathcal{#1}}}`

      Quando uso \rel in formule come $s \rel t$, la spaziatura mi sembra corretta; il problema e` quando uso \rel in formule come $\rel \subseteq S \times T$: in quest’ultimo caso \rel viene reso attaccato al simbolo di sottoinsieme, con una spaziatura diversa rispetto a $R \subseteq S \times T$. Se uso ${\rel} \subseteq S \times T$ al posto di $\rel \subseteq S \times T$, la spaziatura risultante e` analoga a quella di $R \subseteq S \times T$.

      La domanda e`: sto usando il metodo giusto per definire il simbolo di relazione?
      Se si`, come posso risolvere il problema della spaziatura in modo automatico?
      Se no, qual e` il comando corretto da usare per ottenere il simbolo e la spaziatura corretti?

      Grazie in anticipo a chi mi rispondera`.

    Visualizzazione 7 filoni di risposte
    • Autore
      Risposte
      • #76830
        Up
        0
        Down
        ::


        i simboli di relazioni sono tantissimi…
        sinceramente ho capito poco da ciò che hai scritto.

        puoi cercare sulla rete o tra google immagini un esempio del tuo simbolo di relazione e postarlo qui?
        così possiamo dirti come crearlo e quale è il comando migliore 🙂

      • #76831
        ori
          Up
          0
          Down
          ::


          Mmm.. il simbolo che vorrei ottenere e` una semplice R (o altro carattere maiuscolo, a seconda della necessita`) calligrafico. Niente cose strane…

          Per rendere piu` chiaro il risultato, prova il seguente file tex:
          `\documentclass{article}
          \newcommand{\rel}[1][R]{\mathrel{\mathcal{#1}}}

          \begin{document}
          \begin{itemize}
          \item simbolo voluto: $\rel$
          \item spaziatura corretta (?): $s \rel t$
          \item spaziatura errata (?): $\rel \subseteq S \times T$
          \item spaziatura corretta: $R \subseteq S \times T$
          \item spaziatura corretta (?): ${\rel} \subseteq S \times T$
          \end{itemize}
          \end{document}`

        • #76832
          Up
          0
          Down
          ::


          le ultime due sono le migliori, anche perchè differiscono soltanto per la “R”

          per le altre lettere dell’alfabeto non so se ci sono lettere così… prova a vedere tra le varie calligrafie.

          ps: dimenticavo di dirti che la R che usi tu, non sempre vuol dire relazione

        • #76833
          Up
          0
          Down
          ::

          ori” post=76011Salve a tutti,
          avrei bisogno di definire un simbolo di relazione composto da un carattere maiuscolo calligrafico.
          Per fare cio`, ho definito il comando `\newcommand{\rel}[1][R]{\mathrel{\mathcal{#1}}}`

          Quando uso \rel in formule come $s \rel t$, la spaziatura mi sembra corretta; il problema e` quando uso \rel in formule come $\rel \subseteq S \times T$: in quest’ultimo caso \rel viene reso attaccato al simbolo di sottoinsieme, con una spaziatura diversa rispetto a $R \subseteq S \times T$. Se uso ${\rel} \subseteq S \times T$ al posto di $\rel \subseteq S \times T$, la spaziatura risultante e` analoga a quella di $R \subseteq S \times T$.

          La domanda e`: sto usando il metodo giusto per definire il simbolo di relazione?
          Se si`, come posso risolvere il problema della spaziatura in modo automatico?
          Se no, qual e` il comando corretto da usare per ottenere il simbolo e la spaziatura corretti?

          Grazie in anticipo a chi mi rispondera`.

          Il comando che hai costruito funziona per costruire un simbolo di relazione binaria. Quando, tuttavia, utilizzi la relazione come variabile (cioè in formule com \rel \subset A \times A) allora questo comando non funziona. Io, personalmente, avrei scritto un comando che cambia il carattere alle relazioni e uno che lo sfrutta per scriverle tra due variabili. Per esempio, potresti fare

          `
          \newcommand{\rvar}[#1][R]{\mathcal{#1}}
          \newcommand{\rel}[#1][R]{\rvar{#1}}
          `

          e quindi utilizzare \rvar quando scrivi una formula come $\rvar \subset A\times A$ ed invece \rel quando scrivi $x \rel y$.

          Mi spiace che sia una soluzione elementare, ma i nostri guru ti sapranno sicuramente aiutare meglio.

          Andrea

        • #76834
          Up
          0
          Down
          ::

          ori” post=76011Salve a tutti,
          avrei bisogno di definire un simbolo di relazione composto da un carattere maiuscolo calligrafico.
          Per fare cio`, ho definito il comando `\newcommand{\rel}[1][R]{\mathrel{\mathcal{#1}}}`

          Quando uso \rel in formule come $s \rel t$, la spaziatura mi sembra corretta; il problema e` quando uso \rel in formule come $\rel \subseteq S \times T$: in quest’ultimo caso \rel viene reso attaccato al simbolo di sottoinsieme, con una spaziatura diversa rispetto a $R \subseteq S \times T$. Se uso ${\rel} \subseteq S \times T$ al posto di $\rel \subseteq S \times T$, la spaziatura risultante e` analoga a quella di $R \subseteq S \times T$.

          La domanda e`: sto usando il metodo giusto per definire il simbolo di relazione?
          Se si`, come posso risolvere il problema della spaziatura in modo automatico?
          Se no, qual e` il comando corretto da usare per ottenere il simbolo e la spaziatura corretti?

          Grazie in anticipo a chi mi rispondera`.

          Ti consiglio di usare una sintassi che distingua quando vuoi il simbolo come relazione o come simbolo ordinario.
          `\usepackage{xparse}
          \NewDocumentCommand{\rel}{sO{R}}{
          \IfBooleanT{#1}{\mathrel\bgroup}
          \mathcal{#2}
          \IfBooleanT{#1}{\egroup}}`
          e così avrai la possibilità di scrivere
          `a \rel* b
          x \rel* y
          \rel \subseteq \rel`
          Con * hai un simbolo di relazione, senza hai un simbolo ordinario. Se vuoi invertire il comportamento, sostituisci [tt]\IfBooleanT[/tt] con [tt]\IfBooleanF[/tt]

          Ciao
          Enrico

        • #76835
          ori
            Up
            0
            Down
            ::


            Grazie a tutti.

            Visto che non sembra esserci un modo automatico per distinguere i due usi, vedo di definire due diversi comandi che mi siano piu` mnemonici e che siano proposti dal completamento automatico di Kile.

          • #76836
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Un modo molto semplice è mettere un atomo matematico vuoto fra due operatori di relazione consecutivi, del tipo `\rel {} \subseteq …`
              Non è automatico ma funziona benissimo e non richiede altro che una coppia di graffe che puoi mettere anche in seconda battuta quando correggi il tuo documento; naturalmente la soluzione di Enrico richiede solo un * in più o in meno.

            • #76837
              ori
                Up
                0
                Down
                ::


                Ho provato come mi suggerisci, ma ottengo una spaziatura maggiore tra \rel e \subseteq che tra una delle soluzioni R e \subseteq, {\rel} e \subseteq, o \mathcal{R} e \subseteq.

                Penso di adottare l’accoppiata di comandi
                `\newcommand{\relord}[1][R]{\mathcal{#1}}
                \newcommand{\rel}[1][R]{\mathrel{\relord[#1]}}`

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

            Go to top