I can escape some special characters with a backslash.
\documentclass{article}
\begin{document}
\# \$ \% \& \_ \{ \}
\end{document}
But why can't I escape ^ and ~ with a backslash alone? For example, the code below does not work.
\documentclass{article}
\begin{document}
\^
\end{document}
It causes the following error with texlive.
$ pdflatex foo.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./foo.tex
LaTeX2e <2014/05/01>
Babel <3.9l> and hyphenation patterns for 2 languages loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) (./foo.aux)
! Missing \endcsname inserted.
<to be read again>
\global
l.4 \end
{document}
?
! Emergency stop.
<to be read again>
\global
l.4 \end
{document}
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on foo.log.
In fact, I have to first escape with them a backslash and then add {} as a suffix to them to make it work.
\documentclass{article}
\begin{document}
\^{}
\~{}
\end{document}
I understand that {}, i.e. the empty parameter list, forces TeX to consider it as the end of a command and beginning of text again, but I want to understand why {} is necessary.
Two questions:
- Why can't these characters be escaped with
\alone? - Is there any difference between
\^{}and\^\? They seem to give the same output but I want to know if there is any difference between them that might product different results under any circumstances?

\^is used to get the circumflex accent, e.g.\^eor\^{e}for ê and, again,\~is for the tilde diacritic, as in\~{n}for ñ. In any case\^{}will give you the pure accent, it's like using a dead key on an old typewriter and then hitting the space. It may be better to use other ways to produce the ^ and the ~ – Au101 Jun 06 '16 at 01:46\string^and\string~. – Manuel Jun 06 '16 at 07:02