Vergleichen von Strings aus txt File

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Failix

Vergleichen von Strings aus txt File

Beitrag von Failix »

Hallo,

ich möchte zwei Strings miteinander vergleichen wobei der eine String aus einem .txt File ausgelesen werden soll. Bisher habe ich folgendes. Die Datei "imagelist.txt" besteht aus Zeilen in denen jeweils der Filename eines PNG Bildes steht. Zum kompilieren das Minimalbeispiels reicht ein einfaches .txt File mit einer Zeile: "test.png". Außerdem muss glaub ich -shell-escape aktiviert sein. Was bisher funktioniert ist, dass jede Zeile eingelesen wird und in den eigentlichen Namen und die .png Endung getrennt wird. Trotzdem spuckt ifthenelse immer Nein aus.

Code: Alles auswählen

\documentclass{article}
\usepackage[strings]{underscore}
\usepackage[T1]{fontenc}
\usepackage{ifthen}

\newcommand{\comp}{test}

\begin{document}

	\makeatletter
		\newread\reader
		\openin\reader=imagelist.txt\relax
		\begingroup
			\endlinechar=-1\relax
			\loop
				\readline\reader to \data
				\unless\ifeof\reader
				\filename@parse{\data}  
	
				\filename@base
				\newline
	
				\ifthenelse{\equal{\comp}{\filename@base}}{Ja}{Nein}
				\newline			
				
				
			\repeat
		\endgroup
	\closein\reader
	\makeatother
		
\end{document}
[\code]

Failix

Beitrag von Failix »

Ich kann den Beitrag leider nicht bearbeiten, hab ihn vorschnell abgeschickt.
Was fehlt:

Ich freue mich über Anregung und Tipps jeder Art!

Vielen Dank

Gast

Beitrag von Gast »

Mit etoolbox' \ifdefstrequal funktioniert es

Code: Alles auswählen

\documentclass{article}
\usepackage[strings]{underscore}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}


\usepackage{filecontents}
\begin{filecontents*}{imagelist.txt}
lorem
test
ipsum
\end{filecontents*}

\newcommand{\comp}{test}

\begin{document}

   \makeatletter
      \newread\reader
      \openin\reader=imagelist.txt\relax
      \begingroup
         \endlinechar=-1\relax
         \loop
            \readline\reader to \data
            \unless\ifeof\reader
            \filename@parse{\data}  
   
            \filename@base
            \newline
   
            \ifdefstrequal{\comp}{\filename@base}{Ja}{Nein}
            \newline        
         \repeat
      \endgroup
   \closein\reader
   \makeatother
\end{document}

Failix

Beitrag von Failix »

Hallo,

vielen Dank dafür! Funktioniert!

Antworten