%20.png)
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 datatool
paquete. El MWE lee el archivo CSV MyData.csv
y luego busca "una frase más" y "tres frases más":
Notas:
- El
filecontents
paquete se utilizó para configurar un archivo para leer en este caso de prueba. No es necesario en su caso de uso real. - he usado
newtoggle
desdeeletoolbox
paqueteya que prefiero esa sintaxis a la\newif
sintaxis. Pero si no desea incluir un paquete adicional, debería ser bastante sencillo adaptarlo para usar\newif
oalgunos 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)
}
@