catcode 13: nel pdf compare =13

  • Creatore
    Topic
  • #112377
    marcocurreli
    Partecipante
      Up
      0
      Down
      ::


      Buona sera a tutti,

      ho un documento dove ci sono una miriade di barre rovesciate, per cui ho codificato il simbolo § in questo modo:
      `
      \catcode`§=13
      \def§{\textbackslash{}}
      `
      La cosa funziona, però nel pdf, nel punto in cui ho inserito \catcode mi compare il testo “=13” (se lo metto nel preambolo mi compare all’inizio del documento).
      Uso LaTex con Kile, e il documento l’ho compilato con pdflatex.

      Ne file di registro (gawk.log) viene riportato i seguente errore:
      !` Missing number, treated as zero.

      \protect
      l.92 \catcode`§
      =13
      A number should have been here; I inserted `0'.
      (If you can't figure out why I needed to see a number,
      look up `weird error' in the index to The TeXbook.)`
      Pare che il problema sia dovuto al carattere § non riconosciuto da inputenc.
      Infatti:
      `! Package inputenc Error: Keyboard character used is undefined
      (inputenc) in inputencoding `utf8'.

      See the inputenc package documentation for explanation.
      Type H for immediate help.

      l.92 \catcode`§
      =13\relax
      You need to provide a definition with \DeclareInputText
      or \DeclareInputMath before using this key.]`

    Visualizzazione 3 filoni di risposte
    • Autore
      Risposte
      • #112378
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Infatti se usi pdflatex, hai bisogno che tu abbia definito un encoding d’entrata con una delle opzioni accettate , ma sarebbe meglio che fosse utf8, oggi, direi, l’unico veramante inderogabile sempre, anche se scrivi in inglese. Con xelatex e lualatex devi usare per il file sorgente al codifica utf8, ma non la devi esplicitare come opzione a inputenc, perché NON devi invocare \inputenc.

          Con un file d’entrata codificato in \utf8, allora il comando giusto da usare (nel preambolo} è `\catcode`\§=13
          \def§{\textbslash }\`

        • #112379
          marcocurreli
          Partecipante
            Up
            0
            Down
            ::


            Innanzitutto ti ringrazio per la cortese e celere risposta. Purtroppo il problema persiste.
            II file d’entrata è codificato in utf8 unicode. Inputenc l’ho caricato con l’opzione per utf8:
            `\usepackage[utf8]{inputenc}`

          • #112380
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Si, hai ragione; con lualatex con il quale avevo provato il codice, funzionava perfettamente (a parte sostituire \textbslash con \textbackslash).

              Purtroppo con codifica utf8 i caratteri diversi da quelli ASCII, vencono codificato con una LICR (LaTeX Internal Character Representation).

              Quindi o usi un carattere ASCII che usi poco,per esempio ? e allora“\?=13 \def\?{\textbackslash}` funziona perfettamante con pdfLaTeX.
              Oppure, se non hai caratteri non usabili fra quelli ASCII, usi XeTeX o LuaTeX. oppure, per non scrivere in continuazione \textbackslash senza scordare lo spazio, scrivi semplicemente \char92, che non è un solo carattere, ma certo non è lungo come usare il nome per disteso.

            • #112381
              marcocurreli
              Partecipante
                Up
                0
                Down
                ::


                Grazie Claudio.

                Ho fatto una prova con @ e funziona perfettamente; così ho deciso di usare \char92 nel testo e catcode @ nelle tabelle, dopo \table e prima di \tabular, visto che il problema principale sono le tabelle (in alcune ci sono anche 20 barre rovesciate in una sola riga).

                Marco

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

            Go to top