Equivalente en látex de DECODE (verifique el texto y asigne el número)

Equivalente en látex de DECODE (verifique el texto y asigne el número)

Tengo cuatro oraciones probables en el archivo CSV. Ej: oración 1 aquí, una oración más, una oración más agregada, última oración.

En Látex; Quiero imprimir 1 si la "oración 1 aquí" está presente. Algo así como DECODIFICAR en SQL. ¿Puede indicarme una URL donde pueda aprender una funcionalidad similar?

Regads,

Respuesta1

Dado que está buscando específicamente una funcionalidad de tipo SQL, le sugiero que exploreel datatoolpaquete. El MWE lee el archivo CSV MyData.csvy luego busca "una frase más" y "tres frases más":

ingrese la descripción de la imagen aquí

Notas:

  • El filecontentspaquete se utilizó para configurar un archivo para leer en este caso de prueba. No es necesario en su caso de uso real.
  • he usado newtoggledesdeel etoolboxpaqueteya que prefiero esa sintaxis a la \newifsintaxis. Pero si no desea incluir un paquete adicional, debería ser bastante sencillo adaptarlo para usar \newifoalgunos otros métodos condicionales.
  • Cambie el texto "Lo encontré" para que sea solo "1" (según la pregunta) si esa es toda la funcionalidad que desea, o ajuste el código allí para hacer otra cosa.

Código:

\documentclass{article}
\usepackage{datatool}
\usepackage{xstring}
\usepackage{etoolbox}

%\usepackage{filecontents}% <-- Commented out to prevent overwriting MyData.csv
\begin{filecontents*}{MyData.csv}
    sentence 1 here, 
    one more sentence, 
    one more sentence added, 
    last sentence,
\end{filecontents*}


\newtoggle{FoundInDB}
\newcommand*{\CheckIfInDB}[4]{%
    % #1 = database
    % #2 = string to chek
    % #3 = code to execute if string is found
    % #4 = code to execute if string is NOT found
    \global\togglefalse{FoundInDB}%
    \DTLforeach{#1}{%
         \CurrentSentence=Sentence%
    }{%
         \IfStrEq{\CurrentSentence}{#2}{%
             %% Found string -- we are done
             \global\toggletrue{FoundInDB}%
             \dtlbreak% No point in searching rest of file
         }{%
             % Still haven't found what we are looking for :-(
         }%
    }%
    \iftoggle{FoundInDB}{#3}{#4}%
}%


\begin{document}
\DTLloaddb[noheader,keys={Sentence}]{myDB}{MyData.csv}

\CheckIfInDB{myDB}{one more sentence}{Found it}{Not Found!}

\CheckIfInDB{myDB}{three more sentences}{Found it}{Not Found!}

\end{document} 

Respuesta2

Si entiendo correctamente, desea verificar una fila en un archivo CSV y asignar un número según esta oración.

Simplemente puede lograr esto usando archivos R y sweave (básicamente son archivos LaTeX que tienen funcionalidad de lenguaje R. Recuerde agregar el paquete knitr a R Studio.

Entonces comienzas el archivo como látex normal, luego \begin{document} escribes el siguiente fragmento

<<echo=false>>=
Data<-read.csv("file.path.here")
sapply(Data, function(x){
if(x=="sentence 1 here"){
    return(1)
} elseif(x=="sentence2"){
    return(2)
}else{
    return(0)
}
@

información relacionada