2

This may seem like a very stupid question, but I can't work out how to identify a file to be inputed using \input in xelatex. I think I am doing the right thing, but for some reason it does not work.

My main file looks like this:

\documentclass{report}
\begin{document}
\input(testinput.tex)
\end{document}

I have a file called testinput.tex in the same directory. If, in that directory, I run xelatex it complains it cannot find the file, but runs fine if I type in the file's name.

This is XeTeX, Version 3.14159265-2.6-0.99996 (TeX Live 2016) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2017/01/01> patch level 3
Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/report.cls
Document Class: report 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2016/texmf-dist/tex/latex/base/size10.clo)) (./test.aux)
! I can't find file `(testinput.tex)'.
l.3 \input(testinput.tex)

(Press Enter to retry, or Control-D to exit)
Please type another input file name: testinput.tex
(./testinput.tex) [1] (./test.aux) )
Output written on test.pdf (1 page).
Transcript written on test.log.

I am baffled as to what I am doing wrong. I have tried this without the .tex extension and seen the same result.

1 Answers1

7

Your input suggests you use parentheses (()) around your file name. The correct way to pass an argument (mandatory) to a LaTeX command is to use braces ({}). So you should use the following code:

\documentclass{report}
\begin{document}
\input{testinput.tex}
\end{document}

This is by the way independent of any engine.

Update: As LaTeX will automatically append .tex you could also use the following:

\documentclass{report}
\begin{document}
\input{testinput}
\end{document}

But be aware that here LaTeX will check for file testinput first and then look at testinput.tex. That's probably a good reason to use the extension .tex while inputting the file.

TeXnician
  • 33,589
  • 1
    AFAIK LaTeX does not append .tex, TeX itself or kpathsea may append .tex, but this is implementation depending (nevertheless common for current TeX implementations). LaTeX appends .tex only if you use \include. – Schweinebacke Apr 23 '17 at 17:38
  • 1
    @Schweinebacke At least for me it works, but you're right though (read it at weinelt.de, golatex.de says something different). – TeXnician Apr 23 '17 at 17:41
  • @TeXnician: From weinelt.de: "Die Beschreibung auf dieser Seite basiert auf der heutzutage geradezu antiken LaTeX-Version 2.09; die Erweiterungen der aktuellen Version LaTeX2e sind leider immernoch nicht enthalten." ;-) –  Apr 23 '17 at 17:48
  • @ChristianHupfer Haven't seen it at that point. – TeXnician Apr 23 '17 at 18:05
  • 1
    @TeXnician: The problem with weinelt.de is that this site pops up very frequently if you use Google to look up for LaTeX reference. More weird is that the owner of the site started to provide a LaTeX reference with LaTeX 2.09 about 5 years after LaTeX2e was established ... –  Apr 23 '17 at 18:08
  • I am afraid I cannot read or understand German, so I am not sure what that actually says. – Francis Davey Apr 23 '17 at 18:19
  • @TeXnician - thanks it was a stupid mistake that I couldn't follow, but clearing up the rules on appending .tex is useful too. – Francis Davey Apr 23 '17 at 18:22
  • 2
    @Schweinebacke no, adding .tex is implemented by tex-the-program, (and documented in the texbook) it isn't a latex feature. – David Carlisle Apr 23 '17 at 20:48