più lingue in un documento

  • Creatore
    Topic
  • #43187
    Up
    0
    Down
    ::


    ciao a tutti, ho un problema sul quale ignoro l’esistenza o meno di una soluzione.
    ho un documento abbastanza stupido (un cv) con frasi relativamente brevi, e mi piacerebbe trovare una scappatoia con qualche macro per fare una cosa tipo

    \qualcosa{\ita{frase in italiano}\eng{stessa frase in inglese}…}

    e selezionare volta per volta solo una delle tante in fase di compilazione in modo da non dover mantenere due file separati, anche perché se voglio cambiare una virgola, una disposizione non ho voglia di rifare la stessa cosa due volte

    esiste una soluzione praticabile da latex?

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #43188
      Up
      0
      Down
      ::

      ciao a tutti, ho un problema sul quale ignoro l’esistenza o meno di una soluzione.
      ho un documento abbastanza stupido (un cv) con frasi relativamente brevi, e mi piacerebbe trovare una scappatoia con qualche macro per fare una cosa tipo

      \qualcosa{\ita{frase in italiano}\eng{stessa frase in inglese}…}

      e selezionare volta per volta solo una delle tante in fase di compilazione in modo da non dover mantenere due file separati, anche perché se voglio cambiare una virgola, una disposizione non ho voglia di rifare la stessa cosa due volte

      esiste una soluzione praticabile da latex?

      Benvenuto! Non sono sicuro che tu voglia davvero fare come chiedi, ma qui c’è una possibile soluzione.
      `\documentclass[a4paper]{article}
      \usepackage[englishitalian]{babel} % questa se il documento è in italiano
      % \usepackage[italian,english]{babel} % questa se il documento è in inglese
      \newcommand{\frase}{\iflanguage{italian}}
      \begin{document}
      \frase{una frase in italiano}{a sentence in English}
      \end{document}`
      Ciao
      Enrico

    • #43189
      Up
      0
      Down
      ::

      Benvenuto! Non sono sicuro che tu voglia davvero fare come chiedi, ma qui c’è una possibile soluzione.
      `\documentclass[a4paper]{article}
      \usepackage[english,italian]{babel} % questa se il documento è in italiano
      % \usepackage[italian,english]{babel} % questa se il documento è in inglese
      \newcommand{\frase}{\iflanguage{italian}}
      \begin{document}
      \frase{una frase in italiano}{a sentence in English}
      \end{document}`
      Ciao
      Enrico

      è più o meno quello che volevo, grazie mille! l’unica cosa è che dovrei modificare il documento e commentare / decommentare volta per volta mentre invece io potrei non voler nemmeno prendermi quel disturbo (ihih).

      c’è modo di passare, che so, un parametro in fase di compilazione per distinguere fra le due lingue ? secondariamente, è possibile discernere fra un numero arbitrario di lingue senza annidare troppi frase{} diversi ?

      per ora io ho risolto scrivendo uno script python che processa un file latex in cui le stringhe da scegliere e tradurre sono nella forma “@[[stringa in lingua 1],…,[stringa in lingua n]]”, così lo chiamo una volta sola e mi compila il pdf in tutte le lingue – se qualcuno è interessato glielo mando.

    • #43190
      Up
      0
      Down
      ::

      Benvenuto! Non sono sicuro che tu voglia davvero fare come chiedi, ma qui c’è una possibile soluzione.
      `\documentclass[a4paper]{article}
      \usepackage[english,italian]{babel} % questa se il documento è in italiano
      % \usepackage[italian,english]{babel} % questa se il documento è in inglese
      \newcommand{\frase}{\iflanguage{italian}}
      \begin{document}
      \frase{una frase in italiano}{a sentence in English}
      \end{document}`
      Ciao
      Enrico

      è più o meno quello che volevo, grazie mille! l’unica cosa è che dovrei modificare il documento e commentare / decommentare volta per volta mentre invece io potrei non voler nemmeno prendermi quel disturbo (ihih).

      c’è modo di passare, che so, un parametro in fase di compilazione per distinguere fra le due lingue ? secondariamente, è possibile discernere fra un numero arbitrario di lingue senza annidare troppi frase{} diversi ?

      per ora io ho risolto scrivendo uno script python che processa un file latex in cui le stringhe da scegliere e tradurre sono nella forma “@[[stringa in lingua 1],…,[stringa in lingua n]]”, così lo chiamo una volta sola e mi compila il pdf in tutte le lingue – se qualcuno è interessato glielo mando.

      Vediamo con tre lingue, chiamiamo “mydoc.tex” il seguente file:
      `\def\choosemainlanguage{%
      \ifcase\mylanguage
      english,german,italian\or
      german,italian,english\or
      italian,english,german\fi}

      \documentclass[a4paper]{article}
      \expandafter\usepackage\expandafter[\choosemainlanguage]{babel}

      \newcommand{\frase}[3]{%
      \ifcase\mylanguage#1\or#1\or#3\fi}

      \begin{document}
      \frase{Io sono}{I am}{Ich bin}
      \end{document}`
      Per scegliere la lingua devi chiamare la compilazione da terminale:
      `pdflatex “\chardef\mylanguage=0 \input mydoc”
      pdflatex “\chardef\mylanguage=1 \input mydoc”
      pdflatex “\chardef\mylanguage=2 \input mydoc”`
      Con la prima chiamata scegli l’italiano, con la seconda l’inglese, con la terza il tedesco.

      Un semplice “shell script” automatizza il tutto:
      `#!/bin/sh
      pdflatex “\chardef\mylanguage=$1 \input $2″`
      Se lo script è domydoc, basta chiamarlo con “domydoc 0 mydoc” o con gli altri numeri.

      Ciao
      Enrico

    • #43191
      Up
      0
      Down
      ::


      ok, grazie, è esattamente quello che volevo !

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

Go to top