![如何使用 showexpl 和 tufte-handout](https://linux22.com/image/314051/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20showexpl%20%E5%92%8C%20tufte-handout.png)
我正在使用该类处理一个文档tufte-handout
,其中我需要包含一些LaTeX
代码示例,我尝试showexpl
按照它在 MWE 中出现的方式使用该包:
\documentclass[twoside]{tufte-handout}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage[spanish,mexico]{babel}
\usepackage{showexpl}
\lstloadlanguages{[LaTeX]Tex}
\lstset{%
basicstyle=\ttfamily\small,
commentstyle=\itshape\ttfamily\small,
showspaces=false,
showstringspaces=false,
breaklines=true,
breakautoindent=true,
captionpos=t
}
\begin{document}
\begin{LTXexample}
\begin{itemize}
\item Introducción a \LaTeX
\item Texto con \LaTeX
\begin{itemize}
\item Reglas básicas
\item Entornos de texto
\begin{itemize}
\item Incisos, citaciones y poemas
\begin{itemize}
\item \textsf{quote}
\item \textsf{quotation}
\item \textsf{verse}
\end{itemize}
\item Listas
\begin{itemize}
\item \textsf{itemize}
\item \textsf{enumerate}
\item \textsf{description}
\end{itemize}
\item Texto alineado horizontalmente
\begin{itemize}
\item \textsf{flushleft}
\item \textsf{center}
\item \textsf{flushright}
\end{itemize}
\item Texto mecanografiado
\begin{itemize}
\item \textsf{verbatim}
\end{itemize}
\end{itemize}
\end{itemize}
\end{itemize}
\end{LTXexample}
\end{document}
但是,出现了问题,似乎无法编译。我不知道它是否必须查看此类中的印刷大小写,还是因为它无法在两列中工作。
我收到以下错误消息:
Package inputenc Error: Unicode char \u8:\expandafter not set up for use with LaTeX.
Package inputenc Error: Keyboard character used is undefined
仅当我尝试引入LTXexampe
环境时才会发生这种情况。否则编译会运行良好。
答案1
问题不在于文档类别,而在于西班牙语中的重音字母(在此特定情况下为“ó”和“á”)。已知的列表解决方法:使用文字或甚至将重音字符转义为 LaTeX(例如,建议在如何在列表中插入带有重音符号的代码?) 不起作用,showexpl
因为在写入内部使用的临时文件时非 ascii 字符会丢失。
我想向你推荐强大的tcolorbox
包及其与的良好交互listings
;这里有一个小例子(根据您的需要调整设置;特别是,您需要添加对重音大写元音、crema 和 eñe 的支持):
\documentclass[twoside]{tufte-handout}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish,mexico]{babel}
\usepackage[many]{tcolorbox}
\tcbuselibrary{listings}
\lstset{%
language=[LaTeX]TeX,
basicstyle=\ttfamily\small,
commentstyle=\itshape\ttfamily\small,
showspaces=false,
showstringspaces=false,
breaklines=true,
breakautoindent=true,
captionpos=t,
literate=%
{á}{{\'a}}1
{é}{{\'e}}1
{í}{{\'i}}1
{ó}{{\'o}}1
{ú}{{\'u}}1
}
\tcbset{
example/.style 2 args={
colframe=red!50!black,
colback=red!50!black!5,
fonttitle=\small\sffamily\bfseries,
fontupper=\small,
fontlower=\small,
text outside listing,
title={Ejemplo~\thetcbcounter: #1},label={#2}},
}
\newtcblisting[auto counter]{micodigo}[3][]{example={#2}{#3},#1}
\begin{document}
\begin{micodigo}{ejemplo de listas}{eje:lista}
\begin{itemize}
\item Introducción a \LaTeX
\item Texto con \LaTeX
\begin{itemize}
\item Reglas básicas
\item Entornos de texto
\begin{itemize}
\item Incisos, citaciones y poemas
\begin{itemize}
\item \textsf{quote}
\item \textsf{quotation}
\item \textsf{verse}
\end{itemize}
\item Listas
\begin{itemize}
\item \textsf{itemize}
\item \textsf{enumerate}
\item \textsf{description}
\end{itemize}
\item Texto alineado horizontalmente
\begin{itemize}
\item \textsf{flushleft}
\item \textsf{center}
\item \textsf{flushright}
\end{itemize}
\item Texto mecanografiado
\begin{itemize}
\item \textsf{verbatim}
\end{itemize}
\end{itemize}
\end{itemize}
\end{itemize}
\end{micodigo}
\end{document}
结果:
作为伊格纳西建议his comment
literate
,您可以通过使用包来避免使用listingsutf8
。在这种情况下,您可以tcolorbox
按如下方式加载:
\usepackage[many]{tcolorbox}
\tcbuselibrary{listingsutf8}
\tcbset{listing utf8=latin1}
完整示例:
\documentclass[twoside]{tufte-handout}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish,mexico]{babel}
\usepackage[many]{tcolorbox}
\tcbuselibrary{listingsutf8}
\tcbset{listing utf8=latin1}
\lstset{%
language=[LaTeX]TeX,
basicstyle=\ttfamily\small,
commentstyle=\itshape\ttfamily\small,
showspaces=false,
showstringspaces=false,
breaklines=true,
breakautoindent=true,
captionpos=t,
}
\tcbset{
example/.style 2 args={
colframe=red!50!black,
colback=red!50!black!5,
fonttitle=\small\sffamily\bfseries,
fontupper=\small,
fontlower=\small,
text outside listing,
title={Ejemplo~\thetcbcounter: #1},label={#2}},
}
\newtcblisting[auto counter]{micodigo}[3][]{example={#2}{#3},#1}
\begin{document}
\begin{micodigo}{ejemplo de listas}{eje:lista}
\begin{itemize}
\item Introducción a \LaTeX
\item Texto con \LaTeX
\begin{itemize}
\item Reglas básicas
\item Entornos de texto
\begin{itemize}
\item Incisos, citaciones y poemas
\begin{itemize}
\item \textsf{quote}
\item \textsf{quotation}
\item \textsf{verse}
\end{itemize}
\item Listas
\begin{itemize}
\item \textsf{itemize}
\item \textsf{enumerate}
\item \textsf{description}
\end{itemize}
\item Texto alineado horizontalmente
\begin{itemize}
\item \textsf{flushleft}
\item \textsf{center}
\item \textsf{flushright}
\end{itemize}
\item Texto mecanografiado
\begin{itemize}
\item \textsf{verbatim}
\end{itemize}
\end{itemize}
\end{itemize}
\end{itemize}
\end{micodigo}
\end{document}
答案2
listings 无法处理 utf8 字符。请使用xelatex
代替pdflatex
。但是,只能处理双字节字符。
\documentclass[twoside]{tufte-handout}
\usepackage{fontspec}
\usepackage{showexpl}
\lstloadlanguages{[LaTeX]Tex}
\lstset{%
basicstyle=\ttfamily\small,
commentstyle=\itshape\ttfamily\small,
showspaces=false,
showstringspaces=false,
breaklines=true,
breakautoindent=true,
captionpos=t,
}
\begin{document}
\begin{LTXexample}
\begin{itemize}
\item Introducción a \LaTeX
\item Texto con \LaTeX
\begin{itemize}
\item Reglas básicas
\item Entornos de texto
\begin{itemize}
\item Incisos, citaciones y poemas
\begin{itemize}
\item \textsf{quote}
\item \textsf{quotation}
\item \textsf{verse}
\end{itemize}
\item Listas
\begin{itemize}
\item \textsf{itemize}
\item \textsf{enumerate}
\item \textsf{description}
\end{itemize}
\item Texto alineado horizontalmente
\begin{itemize}
\item \textsf{flushleft}
\item \textsf{center}
\item \textsf{flushright}
\end{itemize}
\item Texto mecanografiado
\begin{itemize}
\item \textsf{verbatim}
\end{itemize}
\end{itemize}
\end{itemize}
\end{itemize}
\end{LTXexample}
\end{document}