如何在源代码中包含西班牙语字符?

如何在源代码中包含西班牙语字符?

你好,我需要帮助修复 \begin{lstlisting}[style=Java] 部分的代码,我有 2 个错误

可以从另一个文件读取源代码并添加主.tex 文件吗?

PD:我是 LaTeX 新手 - PD 2:我的英语不太好哈哈

在此处输入图片描述

\documentclass[letterpaper]{article}
\usepackage[letterpaper,margin=0.75in]{geometry}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[spanish,activeacute]{babel}
\selectlanguage{spanish}
\usepackage{times}
\renewcommand{\shorthandsspanish}{}
\usepackage{color}
\definecolor{gray97}{gray}{.97}
\definecolor{gray75}{gray}{.75}
\definecolor{gray45}{gray}{.45}
\usepackage{listings}
\lstset{ frame=Ltb,
framerule=0pt,
aboveskip=0.5cm,
framextopmargin=3pt,
framexbottommargin=3pt,
framexleftmargin=0.4cm,
framesep=0pt,
rulesep=.4pt,
backgroundcolor=\color{gray97},
rulesepcolor=\color{black},
%
stringstyle=\ttfamily,
showstringspaces = false,
basicstyle=\small\ttfamily,
commentstyle=\color{gray45},
keywordstyle=\bfseries,
%
numbers=left,
numbersep=15pt,
numberstyle=\tiny,
numberfirstline = false,
breaklines=true,
}
% 
\lstnewenvironment{listing}[1][]
{\lstset{#1}\pagebreak[0]}{\pagebreak[0]}

\lstdefinestyle{Java}
{language=Java,
}   

\begin{document}

\noindent
Impresión de código fuente del fichero \texttt{Exe4.java}:

\begin{lstlisting}[style=Java]
package exe4;

import java.util.Scanner;

/**
 *
 * @author Felipe Leiva
 */
public class Exe4 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        Conductor cond = new Conductor();

        cond.impresion();
        cond.limpiarConsola();
        System.out.println("Ingrese el rut del Conductor: ");
        String dato = scan.nextLine();
        cond.setRut(dato);
        System.out.println("Ingrese el nombre del Conductor: ");
        dato = scan.nextLine();
        cond.setNombre(dato);
        System.out.println("Ingrese el apellido del Conductor: ");
        dato = scan.nextLine();
        cond.setApellido(dato);
        System.out.println("Ingrese sexo (M para Masculino/ F para Femenino):"
                + " ");
        char sexo = scan.next().charAt(0);
        cond.setSexo(sexo);
        System.out.println("Ingrese año de contratacion del conductor: ");
        int datoint = scan.nextInt();
        cond.setContratacion(datoint);
        System.out.println("Ingrese el sueldo del conductor: ");
        datoint = scan.nextInt();
        cond.setSueldo(datoint);
        scan.nextLine();
        System.out.println("Ingrese el tipo de contrato (S si es contrato "
                + "indefinido o F si no tiene):");
        dato = scan.nextLine();
        while (!dato.equals("S") & !dato.equals("F")) {
            System.out.println("ERROR - Solo puede ingresar 2 opciones 'S' o "
                    + "'F'");
            System.out.println("");
            System.out.println("Ingrese nuevamente la opcion: ");
            dato = scan.nextLine();
        }
        if (dato.equals("S")) {

            boolean indefinido = true;
            cond.setIndefinido(indefinido);
        }
        if (dato.equals("F")) {
            boolean indefinido = false;
            cond.setIndefinido(indefinido);
        }
        cond.limpiarConsola();
        cond.impresionFormato();
        cond.calcularYears();
        cond.aumentoSueldo();
    }
}
\end{lstlisting}

\end{document}

答案1

清单手册上写道: 类似地,如果您在列表中使用 UTF-8 扩展字符,则必须将它们放在 LATEX 的转义字符内。

这是有效的(前提是你不在|程序中使用):

\begin{lstlisting}[style=Java, escapechar={|}]
...
System.out.println("Ingrese |año| de contratacion del conductor: ");
...
\end{lstlisting}

这里我们将其定义|为转义为 LaTeX 字符,并要求列表año在 LaTeX 内部排版。

当然,这也可以,但是,我猜,可读性较差:

System.out.println("Ingrese a|ñ|o de contratacion del conductor: ");

相关内容