bug-texinfo
[Top][All Lists]

## texi2dvi changes the behavior of ~

 From: Akim Demaille Subject: texi2dvi changes the behavior of ~ Date: Mon, 4 May 2009 18:08:41 +0200

Hi all,

texi2dvi has code that looks like this:

# we'd like to handle arbitrary input file names, especially
# foo~bar/a~b.tex, since Debian likes ~ characters.
if $catcode_special; then #$normaltilde is just to reduce line length in this source file.

# The idea is to define \normaltilde as a catcode other ~ character, # then make the active ~ be equivalent to that, instead of the plain
    # TeX tie.  Then when the active ~ appears in the filename, it will
# be expanded to itself, as far as \input will see.  (This is the
# same thing that texinfo.tex does in general, BTW.)

normaltilde="${escape}catcode126=12${escape}def${escape}normaltilde{~}" cmd="$cmd '$normaltilde${escape}catcode126=13 ${escape}let~ \normaltilde '"  fi  which is enabled by default (catcode_special=true), therefore, a call such as:  texi2pdf foo.tex actually calls something like  pdflatex '\catcode126=12 \def\normaltilde{~}\catcode126=13 \let~ \normaltilde ' '\input' foo.tex  As a result:  $ cat foo.tex
\documentclass{article}
\begin{document}
a~b
\end{document}

$pdflatex '\catcode126=12 \def\normaltilde{~}\catcode126=13 \let~ \normaltilde ' '\input' foo.tex This is pdfTeX, Version 3.141592-1.40.3 (Web2C 7.5.6) entering extended mode LaTeX2e <2005/12/01>  Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh yphenation, arabic, basque, bulgarian, coptic, welsh, czech, slovak, german, ng erman, danish, esperanto, spanish, catalan, galician, estonian, farsi, finnish, french, greek, monogreek, ancientgreek, croatian, hungarian, interlingua, ibyc us, indonesian, icelandic, italian, latin, mongolian, dutch, norsk, polish, por tuguese, pinyin, romanian, russian, slovenian, uppersorbian, serbian, swedish, turkish, ukenglish, ukrainian, loaded. (./foo.tex (/opt/local/share/texmf-dist/tex/latex/base/article.cls Document Class: article 2005/09/16 v1.4f Standard LaTeX document class  (/opt/local/share/texmf-dist/tex/latex/base/size10.clo)) (./foo.aux) [1{/opt/lo cal/share/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./foo.aux) )</ opt/local/s hare/texmf-dist/fonts/type1/bluesky/cm/cmr10.pfb> Output written on foo.pdf (1 page, 4604 bytes). Transcript written on foo.log.$ pdftotext foo.pdf
\$ cat foo.txt
a˜b

1



i.e., the tilda, which is a nonbreakable space, becomes visible. This is especially visible when using hyperref's autoref feature which generate "section~\ref{sec.foo}" for "\autoref{sec.foo}".

How is this code expected to disable the magic tricks it plays with ~?