Parole straniere: “tecnologiche” e prestiti

  • Creatore
    Topic
  • #26175
    Up
    0
    Down
    ::


    Ciao a tutti,
    anche se vi leggo spesso, questo è il mio primo post e perciò colgo l’occasione per salutarvi e ringraziarvi dei consigli che già implicitamente mi avete dato 😀 .

    Come curiosità vi dico che sto scrivendo la mia tesi di laurea con il bellissimo ClassicThesis (e mi trovo davvero bene) e tornando all’oggetto di questo post, il mio problema è il seguente:

    essendo una tesi tecnica (ingegneria informatica), mi trovo spesso di fronte a termini per lo più inglesi. Alcuni di essi sono semplicemente dei prestiti (p.e. “standard”, “computer”) entrati di diritto nel lessico italiano (e che quindi non mi danno problemi), altri sono legati a strumenti e tecnologie di cui esiste la possibilità di traduzione solo teorica, dato che nella letteratura tecnica questi termini sono sempre e solo in inglese (p.e. “time-sharing”, “multiplexer”, “weak-keeper”, “frame”, ecc).

    In previsione di ciò, ho cominciato ad etichettare ciascun termine “tecnico”, e ora mi trovo a dover scegliere in che modo presentare al lettore tali termini.

    In un primo momento, ero propenso ad usare \emph sempre, ma il risultato è troppo pesante in quanto tali prestiti sono molto frequenti.
    L’ideale per me sarebbe quello di usare p.e. \emph la prima volta che si usa il termine all’interno di un capitolo o sezione, e un carattere “normale” le volte successive.
    Ovviamente posso fare tutto “a manina”, ma sarei curioso di sapere come automatizzare il tutto o come avreste approcciato il problema se foste stati nella mia situazione.

    Sono aperto a qualsiasi tipo di commento 🙂

    Ciao a tutti
    Giovanni

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #26176
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        Ovviamente posso fare tutto “a manina”, ma sarei curioso di sapere come automatizzare il tutto o come avreste approcciato il problema se foste stati nella mia situazione.

        Di regola, il corsivo si usa per le parole non di uso comune per il lettore a cui è diretto il lavoro. Quindi, se per il tuo “lettore ideale” time-sharing e multiplexer sono di uso comune, non usare il corsivo.

        Quanto al problema di automatizzazione che poni, non saprei: in attesa che qualche guru ci sforni la soluzione su un piatto d’argento, se ne hai voglia potresti iniziare a vedere il codice del pacchetto acronym (che fa una cosa del genere con gli acronimi).

        Scusa per la risposta incompleta!

        Ciao,
        L.

      • #26177
        Up
        0
        Down
        ::

        Di regola, il corsivo si usa per le parole non di uso comune per il lettore a cui è diretto il lavoro. Quindi, se per il tuo “lettore ideale” time-sharing e multiplexer sono di uso comune, non usare il corsivo.

        Grazie mille per questa dritta tipografica.
        Questa sarebbe stata comunque la mia ultima spiaggia 🙂

        In attesa che qualche guru ci sforni la soluzione su un piatto d’argento, se ne hai voglia potresti iniziare a vedere il codice del pacchetto acronym (che fa una cosa del genere con gli acronimi).

        Infatti lo conoscevo e lo stavo già guardando… anche se devo ammettere che sono poco pratico del codice TeX/LaTeX di basso livello.
        Se ci riesco, posto qui il risultato.

        Scusa per la risposta incompleta!

        Figurati! E poi sei stato comunque gentile ad indirizzarmi verso il pacchetto acronym e a darmi la dritta sulla scelta tipografica! Grazie ancora! 😀

        A presto
        Giovanni

      • #26178
        Up
        0
        Down
        ::


        Credo di essere sulla buona strada…

        Posto un esempio esplicativo e semi-funzionante 😛 :
        `\documentclass{scrartcl}

        \newcommand{\primo}[1]{\emph{#1}}
        \newcommand{\seguente}[1]{#1}

        \makeatletter
        \newcommand*\ENG@used{}
        % L'esempio ispiratore riportava \newcommand*\ENG@used{@<>@<>@}
        \newcommand{\eng}[1]{%
        \expandafter\ifx\csname engused@#1\endcsname\ENG@used%
        \seguente{#1}%
        \else%
        \global\expandafter\let\csname engused@#1\endcsname\ENG@used%
        \primo{#1}%
        \fi%
        }
        \makeatother

        \newcommand{\engreset}{
        % qui va il codice per far `dimenticare' i termini già usati
        % per includerlo, magari, un \renewcommand{\chapter}
        % o \renewcommand{\section}
        }

        \begin{document}

        \section{Esempio di funzionamento}
        Questo termine \`e in inglese: \primo{dependability}.
        E qui lo ripeto: \seguente{dependability}.
        Lo ripeto ancora: \seguente{dependability}.
        Qui resetto.
        Qui ri-cito: \primo{dependability}.
        E qui lo cito per l'ultima volta: \seguente{dependability}.

        \section{Test}
        Questo termine \`e in inglese: \eng{dependability}.
        E qui lo ripeto: \eng{dependability}.
        Lo ripeto ancora: \eng{dependability}.
        Qui resetto. \engreset
        Qui ri-cito: \eng{dependability}.
        E qui lo cito per l'ultima volta: \eng{dependability}.

        \section{Test con pi\`u forestierismi}
        Dunque, ecco una sequenza di termini stranieri:
        \begin{itemize}
        \item \eng{computer}
        \item \eng{Computer}
        \item \eng{desktop}
        \item \eng{computer}
        \item \eng{desktop}
        \item \eng{time-sharing}
        \end{itemize}
        Come si vede, questo metodo \`e “case-sensitive''.
        Per riformulare il problema in maniera “case-insensitive'' credo
        basti giocare un pochino con “\verb|\lowercase|''.

        \end{document}`
        Ciò che non riesco a capire ancora bene è l’uso di
        `\newcommand*\ENG@used{@<>@<>@}`
        e l’implementazione di `\reseteng`

      • #26179
        Up
        0
        Down
        ::


        Salve a tutti di nuovo.

        Dato che quei frammenti di codice non funzionano bene come mi aspetterei, ho deciso di cogliere la palla al balzo e studiarmi un po’ di cose da me.
        E proprio qui mi serve il vostro aiuto.

        Riassumendo ciò che voglio fare in pseudo-codice:
        `nuovocomando: eng() {
        if ( lowercase() è già stato usato )
        then
        scrivi con carattere normale
        else
        scrivi enfatizzato
        endif
        }

        nuovocomando: engresetall() {
        dimentica tutti i già usati
        }`
        Il primo problema in cui mi sono imbattuto è che può in alcuni casi essere espandibile (p.e. usando \acl del pacchetto acronym).
        Il secondo problema è che avrei bisogno di una struttura adeguata alla memorizzazione dei vari in grado anche di essere `svuotata’.

        Da qui penso che le cose da studiare bene sono:

          costrutti if/then/else;
          token e registri token;
          costrutti tipo \csname … \endcsname e \expandafter.

        Però volevo essere sicuro di stare sulla buona strada e nel caso ricevere qualche dritta su dove indirizzare di più i miei sforzi.

        Grazie per l’attenzione
        Giovanni

      • #26180
        Up
        0
        Down
        ::

        Salve a tutti di nuovo.

        Dato che quei frammenti di codice non funzionano bene come mi aspetterei, ho deciso di cogliere la palla al balzo e studiarmi un po’ di cose da me.
        E proprio qui mi serve il vostro aiuto.

        Riassumendo ciò che voglio fare in pseudo-codice:
        `nuovocomando: eng() {
        if ( lowercase() è già stato usato )
        then
        scrivi con carattere normale
        else
        scrivi enfatizzato
        endif
        }

        nuovocomando: engresetall() {
        dimentica tutti i già usati
        }`
        Il primo problema in cui mi sono imbattuto è che può in alcuni casi essere espandibile (p.e. usando \acl del pacchetto acronym).
        Il secondo problema è che avrei bisogno di una struttura adeguata alla memorizzazione dei vari in grado anche di essere `svuotata’.

        Da qui penso che le cose da studiare bene sono:

          costrutti if/then/else;
          token e registri token;
          costrutti tipo \csname … \endcsname e \expandafter.

        Però volevo essere sicuro di stare sulla buona strada e nel caso ricevere qualche dritta su dove indirizzare di più i miei sforzi.

        Qui c’è un po’ di codice che dovrebbe fare al caso tuo.
        `\makeatletter
        \def\eng#1{%
        \ifcsname ENG@#1\endcsname
        \seguente{#1}%
        \else
        \primo{#1}%
        \global\@namedef{ENG@#1}{}%
        \unless\ifcsname ENG@used#1\endcsname
        \global\let\ENG@el\relax
        \xdef\ENG@list{\ENG@list\ENG@el{#1}}%
        \fi
        \global\@namedef{ENG@used#1}{}%
        \fi}

        \let\primo\emph
        \let\seguente\@iden
        \let\ENG@list\@empty

        \def\engreset{\global\let\ENG@el\@engreset\ENG@list}
        \def\@engreset#1{\global\expandafter\let\csname ENG@#1\endcsname\@undefined}
        \makeatother`
        Spiacente, però; tener conto della maiuscola mi sembra piuttosto complicato e, del resto, inutile: è piuttosto difficile che una di quelle parole compaia a inizio capoverso.

        Sinceramente non sarei d’accordo sull’uso del “reset”, mi pare piuttosto forzato, ma se proprio vuoi, nel codice c’è. Vediamo ora come funziona; impiego le estensioni e-TeX, ma non c’è problema se non hai un’installazione di LaTeX straobsoleta; supporrò che sia dato il comando \eng{goofy} (che sarebbe “pippo” in inglese).

        1 – L’idea è quella di vedere se la macro \ENG@goofy è definita; se lo è, siamo nel caso in cui la parola va in tondo.

        2 – Se \ENG@goofy non è definita, la definiamo e scriviamo la parola in corsivo; inoltre, se \ENG@usedgoofy non è definita, la definiamo.

        3 – Se \ENG@usedgoofy non è definita, significa che è proprio la prima volta che il termine compare; se è definita, invece, il termine è già comparso.

        4 – Usiamo una macro che contiene la lista dei termini che sono già comparsi: \ENG@list; se \ENG@usedgoofy non è definita, la lista diventa quello che era prima, con l’aggiunta di \ENG@el{goofy}. Qui \ENG@el equivale a \relax, in modo che non sia espandibile nella \xdef. Con il tuo testo di esempio, il valore finale di \ENG@list è
        `\ENG@el{dependability}\ENG@el{computer}\ENG@el{Computer}\ENG@el{desktop}\ENG@el {time-sharing}`

        5 – La macro \engreset cambia il valore di \ENG@el in \@engreset, che semplicemente cancella la definizione di \ENG@goofy (e di tutte le altre macro simili) e poi esegue \ENG@list.

        Ciao
        Enrico

      • #26181
        Up
        0
        Down
        ::

        Qui c’è un po’ di codice che dovrebbe fare al caso tuo (…)
        Spiacente, però; tener conto della maiuscola mi sembra piuttosto complicato e, del resto, inutile: è piuttosto difficile che una di quelle parole compaia a inizio capoverso.

        Sì, sono d’accordo. Alla fine era più una curiosità 🙂

        Sinceramente non sarei d’accordo sull’uso del “reset”, mi pare piuttosto forzato, ma se proprio vuoi, nel codice c’è.

        Il fatto è che pensavo: io sono un lettore, mi guardo l’indice e scelgo di leggere p.e. il capitolo 4 senza aver prima letto gli altri tre. In questo caso, secondo me, il reset va bene… che ne pensi?

        Vediamo ora come funziona: (…)
        Ciao
        Enrico

        Grazie mille per la spigazione! Effettivamente così è molto più chiaro.

        L’unica cosa che mi resta da fare è rendere il codice utilizzabile anche in situazioni di questo tipo:
        `\documentclass{scrartcl}

        \usepackage{acronym}

        \makeatletter
        \def\eng#1{%
        \ifcsname ENG@#1\endcsname
        \seguente{#1}%
        \else
        \primo{#1}%
        \global\@namedef{ENG@#1}{}%
        \unless\ifcsname ENG@used#1\endcsname
        \global\let\ENG@el\relax
        \xdef\ENG@list{\ENG@list\ENG@el{#1}}%
        \fi
        \global\@namedef{ENG@used#1}{}%
        \fi}

        \let\primo\emph
        \let\seguente\@iden
        \let\ENG@list\@empty

        \def\engreset{\global\let\ENG@el\@engreset\ENG@list}
        \def\@engreset#1{\global\expandafter\let\csname ENG@#1\endcsname\@undefined}
        \makeatother

        \begin{document}

        \section{Esempio comandi immersi}
        \begin{acronym}[FPGA]
        \acro{FPGA}{Field-Programmable Gate Array}
        \end{acronym}

        \eng{\acl{FPGA} scheme} \`e l'acronimo lungo, \eng{\acs{FPGA} scheme} quello corto.

        \eng{design {\sc hdl} entry}

        \end{document}`A occhio e croce credo di potermela cavare più o meno definendo nel preambolo qualcosa del genere:
        `\newcommand{\primo}[1]{\expandafter\emph{\csname #1\endcsname}}`NB Ho già verificato che non funziona 😛 (spero solo di non aver fatto errori troppo grossolani, perché è da poco che sto cominciando a “giocare” con \expandafter & Co.)

        A presto
        Giovanni

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

    Go to top