Script per anteprima fonts

  • Creatore
    Topic
  • #1390
    RN
      Up
      0
      Down
      ::


      Salve, ho scopiazzato e corretto uno csript trovato in rete per l’anteprima dei fonts installati nel nostro sistema ed utilizzabili con latex.
      Lo script funziona con tetex sulla mia Debian, non so se funziona altrove.
      In output riceverete una bell atabella con il nome della famiglia da usare nel comando \fontfamily{} e con una breve anteprima del carattere.

      `#!/bin/sh

      # a script to make a sample page
      # of LaTeX fonts installed on your system

      TEXPATH=”/usr/share/texmf”
      #TEXPATH=”/usr/local/share/texmf”
      SAMPLEFILE=”sample.tex”

      FONTS=`find $TEXPATH -name “*.fd” -exec grep “DeclareFontFamily” {} \; | tr '{' '}' | cut -d '}' -f 4 | sort | uniq | grep -v put`

      if [ -e $SAMPLEFILE ];
      then
      rm -f $SAMPLEFILE *.aux *.log *.dvi *.ps;

      if [ “$?” -ne 0 ];
      then
      echo “Some error occurred removing $SAMPLEFILE”
      exit 1;
      fi

      fi

      HEADER='
      \documentclass[a4paper]{article}
      \usepackage[T1]{fontenc}
      \usepackage[latin1]{inputenc}
      \usepackage{ae,aecompl}

      % Layout Setting

      \oddsidemargin 0.0in
      \evensidemargin 0.0in
      \textwidth 6.5in
      \headheight 15pt
      \topmargin 0.0in
      \textheight=9.0in

      \usepackage{supertabular}

      \title{My \LaTeX~fonts\ldots}
      \author{}
      \date{}

      \newcommand\tabletitle{\\ Font Name & Sample Text\\\hline\hline}
      \newcommand\sample[1]{\\ #1 & \fontfamily{#1} \selectfont QWERTY~~qwerty~~012345789\\\hline}

      \begin{document}

      \vspace{-2cm}
      \maketitle

      \begin{center}
      \begin{supertabular}{p{2cm}|p{8cm}}

      \tabletitle
      '
      FOOTER='
      \end{supertabular}
      \end{center}

      \vspace{2cm}
      \noindent
      Use these fonts with \verb|\fontfamily{name}\selectfont| \newline
      \hspace{10cm}Thanks to \LaTeXe.

      \end{document}
      '

      echo “$HEADER” >> $SAMPLEFILE

      for font in $FONTS;
      do
      echo ” \\sample{$font}” >> $SAMPLEFILE;
      done

      echo “$FOOTER” >> $SAMPLEFILE

      # Ignoring unavailable fonts …

      IGNOREFONTS=`latex $SAMPLEFILE | grep “LaTeX Font Warning: Font shape” | cut -d '/' -f 2 | sort | uniq`

      echo $IGNOREFONTS

      TMP1=`tempfile`
      TMP2=`tempfile`

      echo “$FONTS” > $TMP1;
      echo “$IGNOREFONTS” > $TMP2;

      if [ -z $IGNOREFONTS ];
      then
      VALIDFONTS=$FONTS
      else
      VALIDFONTS=`diff -y $TMP1 $TMP2 | grep '<' | cut -f 1` fi rm $TMP1 $TMP2; # The final sample file ... if [ -e $SAMPLEFILE ]; then rm -f $SAMPLEFILE *.aux *.log *.dvi *.ps; if [ "$?" -ne 0 ]; then echo "Some error occurred removing $SAMPLEFILE" exit 1; fi fi echo "$HEADER" >> $SAMPLEFILE

      for font in $VALIDFONTS;
      do
      echo ” \\sample{$font}” >> $SAMPLEFILE;
      done

      echo “$FOOTER” >> $SAMPLEFILE

      latex $SAMPLEFILE
      dvips *.dvi

      rm *.log *.aux *.tex *.dvi`

      Provate e fate sapere.

      Ho in cantiere anche uno script per facilitare l’installazione dei font postscript per LaTeX.

      Ciao ciao,
      RN

    Visualizzazione 11 filoni di risposte
    • Autore
      Risposte
      • #1391
        ev
        Partecipante
          Up
          0
          Down
          ::


          Ciao,

          Provate e fate sapere.

          Fatto. Diciamo che funziona se \DeclareFontFamily e tutti i suoi parametri sono su un’unica riga; considerando che non e’ strettamente necessario mettere tutto su un unica riga (ed in questa vecchia RH7.3 c’e’ qualche *.fd scritto in questo modo) forse sarebbe il caso di usare awk per estrarre il nome delle “famiglie”. La cosa non e’ proprio immediata perche’ dopo essere giunti ad identificare la riga con \DeclareFontFamily (il pattern /DeclareFontFamily/ e’ sufficiente) si deve controllarne il contenuto (direi con un’espressione regolare) ed eventualmente leggere qualche altro pezzo di file con getline e controllare man mano il testo appena letto (con un’altra espressione regolare)… se mi avanzera’ tempo ci faro’ un pensierino, ma non contarci molto (ho gia’ troppe cose da fare).

          Ho in cantiere anche uno script per facilitare l’installazione dei font postscript per LaTeX.

          “Facilitare” in che senso? Esegui fontinst per generare tutti i file a corredo necessari e poi li installi direttamente nel sistema (magari nell’albero locale)?

        • #1392
          admin
          Amministratore del forum
            Up
            0
            Down
            ::

            Ciao,

            Provate e fate sapere.

            Fatto. Diciamo che funziona se \DeclareFontFamily e tutti i suoi parametri sono su un’unica riga; considerando che non e’ strettamente necessario mettere tutto su un unica riga (ed in questa vecchia RH7.3 c’e’ qualche *.fd scritto in questo modo) forse sarebbe il caso di usare awk per estrarre il nome delle “famiglie”. La cosa non e’ proprio immediata perche’ dopo essere giunti ad identificare la riga con \DeclareFontFamily (il pattern /DeclareFontFamily/ e’ sufficiente) si deve controllarne il contenuto (direi con un’espressione regolare) ed eventualmente leggere qualche altro pezzo di file con getline e controllare man mano il testo appena letto (con un’altra espressione regolare)… se mi avanzera’ tempo ci faro’ un pensierino, ma non contarci molto (ho gia’ troppe cose da fare).

            Beh provero’ io stesso a modificare un po’ lo script.
            Potrei provare usando sed e mettendo tutto su una sola riga …
            Non ho ben capito cosa intendi quando dici della necessita’ di controllare il testo appena letto, mi spieghi meglio ?

            Ho in cantiere anche uno script per facilitare l’installazione dei font postscript per LaTeX.

            “Facilitare” in che senso? Esegui fontinst per generare tutti i file a corredo necessari e poi li installi direttamente nel sistema (magari nell’albero locale)?

            Si, in effetti il mio script fa questo, crea un file .tex che richiama fontinst, poi crea il file .map adeguato ed installa i vari pezzi nell’albero locale TEXMFLOCAL, tutto qui.
            Non e’ una cosa complicata, ma leggendolo si puo’ capire in poco tempo come installare le cose per bene.
            Vabbe’ anche quello no funzionera’ sempre 🙂

            Ciao,
            RN

          • #1393
            ev
            Partecipante
              Up
              0
              Down
              ::

              Beh provero’ io stesso a modificare un po’ lo script.
              Potrei provare usando sed e mettendo tutto su una sola riga …
              Non ho ben capito cosa intendi quando dici della necessita’ di controllare il testo appena letto, mi spieghi meglio ?

              Esempio: se abbiamo un *.fd scritto come segue lo script genera un mezzo casino nel file *.tex
              `\DeclareFontFamily
              {OT1}
              {cmr}
              {\hyphenchar\font45}`
              Quindi, in soldoni, quello che intendevo dicendo di controllare il testo appena letto era che, anche ammettendo di usare awk con il pattern indicato nell’altro messaggio, ci si becca solo la prima riga mentre il pezzo che interessa è, in questo caso sulla terza riga (ma potrebbe essere sulla seconda se chi ha scritto la dichiarazione ha messo l’encoding sulla stessa riga di \DeclareFontFamily); tirando le somme: si dovrebbe controllare in ogni caso la forma della riga estratta da awk, ma anche del testo letto opzionalmente da getline (metti il caso di trovare {OT1}{cmr} assieme su un’unica riga: leggere ancora sarebbe inutile, se non dannoso).

              Si, in effetti il mio script fa questo, crea un file .tex che richiama fontinst, poi crea il file .map adeguato ed installa i vari pezzi nell’albero locale TEXMFLOCAL, tutto qui.
              Non e’ una cosa complicata, ma leggendolo si puo’ capire in poco tempo come installare le cose per bene.
              Vabbe’ anche quello no funzionera’ sempre 🙂

              Ehi, non te la sarai presa a male per i miei commenti sul tuo script, vero? Non intendevo “demolirti”, volevo solo essere costruttivo. Il secondo script magari non funzionerà al primo colpo ovunque, ma si può sempre correggere no? Aspetto notizie 😉

            • #1394
              admin
              Amministratore del forum
                Up
                0
                Down
                ::

                Esempio: se abbiamo un *.fd scritto come segue lo script genera un mezzo casino nel file *.tex
                […]

                Beh in questo caso basta eliminare un po’ di \n 🙂
                Beh, forse ho semplificato un po’ troppo, comunque ho capito cosa intendi, vedro’ di porre rimedio.

                Ehi, non te la sarai presa a male per i miei commenti sul tuo script, vero? Non intendevo “demolirti”, volevo solo essere costruttivo. Il secondo script magari non funzionerà al primo colpo ovunque, ma si può sempre correggere no? Aspetto notizie

                non preoccuparti, non mi offendo tanto facilmente, c’era una bella faccina a sottolineare cio’ che avevo scritto 🙂
                E poi questi script li ho fatti perche’ servivano a _me_ e quindi se li miglioro (grazie al vostro aiuto), saro’ io stesso ad avere una soluzione migliore, no ?

                Ciao,
                RN

              • #1395
                ev
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Ciao,

                  Beh, forse ho semplificato un po’ troppo, comunque ho capito cosa intendi, vedro’ di porre rimedio.

                  Rieccomi qui, con un pezzetto di awk molto piu’ semplice del previsto (niente getline! lasciamo fare tutto ad awk, che sicuramente fara’ un lavoro migliore :wink:)

                  Il seguente codice estrae l’indicazione della famiglia da tutti i *.fd nell’albero di sistema, scartando le situazioni anomale; a te l’onere di integrare la parte essenziale nello script.
                  `for i in $(find /usr/share/texmf -name *.fd); do
                  awk 'BEGIN {RS=”\\”; FS=”[{}]+”} \
                  /DeclareFontFamily/ {if ($3 !~ /[[:blank:]]+/) print $3}' $i
                  done | less`

                  Una nota di servizio: forse siamo un po’ OT per questo forum ed avremmo dovuto spostare la discussione su Altri programmi, ma essendo coinvolto in prima persona lascio la decisione agli altri moderatori.

                • #1396
                  admin
                  Amministratore del forum
                    Up
                    0
                    Down
                    ::


                    Ok,
                    integro il pezzetto awk.

                    Grazie mille 🙂

                    Questo script potrrebbe andare anche sul sito, no ?

                    Ciao,
                    RN

                  • #1397
                    Up
                    0
                    Down
                    ::


                    in effetti il topic è vagamente OT, ma si trova in mezzo ai due forum… se resta qui non è troppo grave, ma forse sarebbe meglio spostarlo dove dice ev.

                    Questo script potrrebbe andare anche sul sito, no ?

                    certamente.

                    a tal proposito, se hai voglia, potresti preparare un mini pdf che contiene lo script, qualche descrizioncina e commento e un esempio del risultato, o altrimenti se non hai voglia una versione magari commentata dello stesso.

                    in tal caso provvederemo subito a metterlo online, direi nella sezione “downloads”

                    grazie e ciao
                    f

                  • #1398
                    GuITstaff
                    Amministratore del forum
                      Up
                      0
                      Down
                      ::


                      Ciao RN, purtroppo dopo il primo messaggio hai continuato a postare mex senza più loggarti, ma se l’avessi fatto avresti ricevuto il mex che ti avevo mandato per posta interna.

                      Fondamentalmente ti chiedevo se avevi voglia di mettere lo script in download sulle pagine di GuIT.

                      Facci sapere e loggati più spesso 😀

                      Ciao

                      Mau

                    • #1399
                      RN
                        Up
                        0
                        Down
                        ::


                        Ciao, lo script l’ho modificato ed ho fatto anche un breve file pdf che descrive rapidamente la cosa.

                        Mi date l’indirizzo di e-mail a cui posso amndarlo ?
                        Ah non ho piu’ adsl e quindi mi colleghero’ raramente nelle prossime settimane, ma non appena riavro’ un collegamento flat vedro’ di collaborare 🙂

                        Ciao,
                        RN

                      • #1400
                        Up
                        0
                        Down
                        ::


                        Ciao, manda tutto a guit.sssup.it e ti faremo sapere presto! 😉

                        Grazie per ora 😀

                        Ciao ciao.

                      • #1401
                        Up
                        0
                        Down
                        ::

                        Ciao, manda tutto a guit.sssup.it e ti faremo sapere presto! 😉

                        C’è una piccola imprecisione: l’indirizzo è guit@sssup.it.
                        Ciao e grazie per la tua collaborazione.

                      • #1402
                        Up
                        0
                        Down
                        ::

                        Ciao, manda tutto a guit.sssup.it e ti faremo sapere presto! 😉

                        C’è una piccola imprecisione: l’indirizzo è guit@sssup.it

                        Ma certo, che sbadato ❗ ❗ ❗
                        Chissà a cosa stavo pensando in quel momento… 🙄 😕

                        Scusatemi tanto!

                        :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

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

                    Go to top