lstinline 有无效的 UTF-8 字节 167

lstinline 有无效的 UTF-8 字节 167

可能重复这个问题

梅威瑟:

\documentclass[%
  parskip=full,% empty line after each paragraph.
  twoside=false% not a 2-sided print for a book.
]{scrbook}

% \usepackage[utf8]{inputenc} % For non-English languages
\usepackage[latin1]{inputenc} % listings needs this encoding instead!

\usepackage{listings, tcolorbox}

\usepackage{tcolorbox}
\tcbuselibrary{listings,skins,theorems,xparse}
\NewTotalTCBox{\inlinebox}{ O{white} v}
{ tcbox raise base,
  arc=2pt,
  nobeforeafter,% makes the box inline
  colback=#1!10!white,% pales given color for background
  boxsep=0pt,left=1pt,right=1pt,top=2pt,bottom=2pt,
  boxrule=0pt}
{\lstinline[style=tcblatex,texcsstyle=*\color{blue}\bfseries]§#2§}
\newcommand\cil{\inlinebox[green]}

\begin{document}

\cil|\TeX| (\TeX) is a control word because it is made up of letters. Any non-letter will end the sequence.

\end{document}

\UseRawInputEncoding如果我按照以下方法操作,这一切都会成功这个答案

我应该这么做吗?或者我应该做更正确的事情吗?

\usepackage[latin1]{inputenc}顺便说一下,也可以。

答案1

有问题的部分是:

\lstinline[...]§#2§

这个角色§不是一个 ASCII 字符。

8 位 TeX 引擎(TeX、pdfTeX)

自包listings确实不是支持多字节编码,文本编码仅限于 8 位编码latin1。然后应通过以下方式声明此编码

\usepackage[latin1]{inputenc}

为了提高可移植性,我建议使用 ASCII 范围之外的其他围栏字符(|&、...)。这样可以避免在输入文件编码更改为 UTF-8 时出现问题。

Unicode 引擎(LuaTeX、XeTeX)

这里的角色§只是字符(大字符),它可以作为\lstinline包的围栏字符listings

但是,LuaTeX 或 XeTeX 支持的最佳输入编码是 UTF-8。因此,输入文件应从 Latin-1 重新编码为 UTF-8。

相关内容