I'm currently writing a .tex report with my wife. She's on a Windows machine and I'm running Linux over here; we've decided to encode our report in ISO-8859-1 (i.e., we use \usepackage[latin1]{inputenc} on the preamble).

We're also generating lots of tables in R using xtable() and some other customized functions to output LaTeX. Whenever I sink an R output, I use this command: sink(file("filename.tex", encoding = "ISO-8856-9")). There is, however, this one long table that contains lots of special characters. Whenever I try to sink this table as ISO I get this message:

Warning message:
invalid char string in output conversion  

Even though it's just a warning, it prevents our LaTeX compiler from being able to correctly parse the command \input{filename.tex}.

The workaround we have for this is using encoding = "UTF-8" in R, then opening the file on a text editor and saving it with ISO encoding. Then LaTeX compiles the file correctly with apparently all special characters.

Is there a command by which I can tell LaTeX that a file I'm inputting has a different encoding from the main LaTeX file? In my mind, it would look something like this \input[utf8]{filename.tex} (but unfortunately \input or it's fellow \include don't take options).


Are you certain that the encoding should be ISO-8856-9? I've never heard of that one. Maybe you mean ISO-8859-6 (Arabic) or ISO-8859-9 (Turkish)?

Let's assume that you meant ISO-8859-9. Then you just write


in the beginning of your code,


just before you include the file and


to restore the original encoding.


UTF-8 might cause some problems. I'd solve it by stating that the whole document should be in UTF-8 and then switching back. Here's an example:

The following file is "main-file.tex", and should be saved with Latin 1.

\section{First section}
Nunca vi socó coçar sem bico, nunca vi sem bico socó coçar. Um socó, dois socós, três socós, quatro socós, quantos socós pra um só socó coçar.


\section{Third section}
A sábia não sabia que o sábio sabia que o sabiá sabia que o sábio não sabia que o sabiá não sabia que a sábia não sabia que o sabiá sabia assobiar.

Also create the file "external-file.tex", and save it with UTF-8:

\section{Second section}
Карл у Клары украл кораллы, а Клара у Карла украла кларнет.

This works for me without any warnings at all. Let me know the specific warnings and errors if you still can't get it to work.

  • Thanks for the help, but that doesn't work (we're writing the document in Brazilian Portuguese, BTW, so we're using \usepackage[brazil]{babel} and \usepackage[T1]{fontenc} in the preamble. I've also tried ambracing my \input{} statement between \inputencoding{utf8} and \inputencoding{latin1}, but it didn't work.
    – wleoncio
    Feb 21 '12 at 21:54
  • @wleoncio It strange that it doesn't work, because it's working for me when I'm attempting a configuration that I believe is similar to yours. Could you try the example above and let me know if it works? Thanks.
    – aliquis
    Feb 22 '12 at 4:23
  • That did work, no warnings or errors whatsoever. Thanks for the help! Feb 24 '12 at 13:26

If the only problem is in fact the warning message produced by the call to sink(file()), you could use suppressWarnings() to tell R that you don't want to hear any grumbling from that particular bit of code.

I can't exactly recreate your problem without the files you're working on, so here's an example that uses another warning-producing call. Here's how you could suppress the warning produced by an attempt to convert the character string "A" to a numeric vector:

sink(file("otherEgFile.txt", encoding = "ISO-8856-9"))    
  • Unfortunately, it doesn't. Maybe I'm doing this wrong, but when I use supressWarnings(), what it does is echo what should have been sunk.
    – wleoncio
    Feb 21 '12 at 21:03
  • @wleoncio Just to clarify, did you wrap the call that actually produces the warnings with suppressWarnings()? I realize I gave you the wrong advice, since the call to sink() is not where you are getting your warning. I'll edit my answer above accordingly. Feb 21 '12 at 21:11
  • Thanks, Josh, your tip helped me solve the problem. What suppressing the warnings for the table inside the sink command actually did was generate a .tex file with an incomplete table. This table was interrupted just before the mischievous character. Since it only happens twice in the table, I can replace it inside the R script, before creating the table. BTW, here's the prick: ’
    – wleoncio
    Feb 21 '12 at 22:10
  • @wleoncio -- Superb. I'm glad to hear that helped you isolate the problem. Cheers. Feb 21 '12 at 22:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.