Texmaker and TeXstudioTrying to include a Matlab script file content = Package inputenc Error: Invalid UTF-8 byte sequence

Information and discussion about Texmaker, an integrated LaTeX environment for several platforms, and the related TeXstudio
Post Reply
Polda18
Posts: 1
Joined: Sun Nov 29, 2020 6:47 pm

Trying to include a Matlab script file content = Package inputenc Error: Invalid UTF-8 byte sequence

Post by Polda18 »

I'm trying to paste contents of a matlab file into my LaTeX document and it keeps giving me bunch of Package inpuntenc errors, a lot of them being Invalid UTF-8 byte sequence. I guess the culprit is that Matlab uses Windows ANSI encoding (in my case it is Central Europe encoding), while my LaTeX document is in UTF-8 encoding.

This is my preamble:
\documentclass[12pt,twoside,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[shorthands=off,czech]{babel}
\usepackage{csquotes}
\usepackage[nointegrals]{wasysym}

\usepackage[style=iso-numeric]{biblatex}
\addbibresource{lab04.bib}

\usepackage{multirow}
\usepackage{amsmath}
\usepackage{float}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{attachfile}
\usepackage{subcaption}
\usepackage{cleveref}
\usepackage[document]{ragged2e}
\usepackage{textcomp}
\usepackage{gensymb}
\usepackage[shortlabels]{enumitem}

\usepackage{listings}
\usepackage{xcolor}

\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}

\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}

\usepackage{siunitx}
\sisetup{
detect-mode,
detect-family,
detect-inline-family=math,
group-separator={ },
group-minimum-digits={3},
output-decimal-marker={,}
}

\usepackage{listings}
\usepackage{listingsutf8}

\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}

\lstset{
backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}; should come as last argument
basicstyle=\footnotesize, % the size of the fonts that are used for the code
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{codegreen}, % comment style
deletekeywords={...}, % if you want to delete keywords from the given language
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
firstnumber=1000, % start line enumeration with line 1000
frame=single, % adds a frame around the code
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
keywordstyle=\color{blue}, % keyword style
language=Octave, % the language of the code
morekeywords={*,...}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{codegray}, % the style that is used for the line-numbers
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=2, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{codepurple}, % string literal style
tabsize=2, % sets default tabsize to 2 spaces
title=\texttt{\lstname} % show the filename of files included with \lstinputlisting; also try caption instead of title
}

\captionsetup[subfigure]{subrefformat=simple,labelformat=simple}
\renewcommand\thesubfigure{(\alph{subfigure})}


And this is how I'm trying to include my Matlab script
\subsection{Zdrojový kód MATLab skriptu}
\lstinputlisting[numbers=left,language=Matlab,frame=single]{.files/scripts/spustit.m}


Can I specify a different input encoding just for this file or do I need to convert it to UTF-8? I tried that later one and it still fails because it still has some invalid UTF-8 encodings. Plus, I can't just convert it to UTF-8 and expect Matlab automatically use UTF-8 as well, it doesn't work like that. I do not like to change settings as first of all I do not know where can I change settings (especially where is the startup file) and second of all, I don't know what to do in order to change the settings and get it working. I guess it can be changed somewhere in Matlab options, but I don't know where to look for it.

Recommended reading 2024:

LaTeXguide.org • LaTeX-Cookbook.net • TikZ.org

NEW: TikZ book now 40% off at Amazon.com for a short time.

Ijon Tichy
Posts: 640
Joined: Mon Dec 24, 2018 10:12 am

Trying to include a Matlab script file content = Package inputenc Error: Invalid UTF-8 byte sequence

Post by Ijon Tichy »

If your listings are not UTF8, you should not load listingsutf8, but use option inputencoding, e.g.

Code: Select all

\lstinputlisting[inputencoding=ansinew,numbers=left,language=Matlab,frame=single]{.files/scripts/spustit.m}
Maybe you also have to set option extendedchars. See section 4.3.6 of the listings manual for more information.

Another suggestion would be to recode the ml-files. MathLab does support UTF-8.

BTW: It is not recommended to load packages more than once. And please mark longer code sequences as code not as latex. You can use either the code button or the "select code" selector in the toolbar.
Sorry, but I can no longer participate here as the administrator is trampling on my wishes on one of his other platforms. :cry:
Post Reply