
Ich habe nicht gelernt, wie die TeX-Erweiterung im Hintergrund funktioniert. Kurz gesagt, wie schreibt man \StrGobbleLeft
die Ausgabe in eine externe Datei?
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{rawdata.txt}
beamerthemeAnnArbor.sty
beamerthemeAntibes.sty
beamerthemeBergen.sty
beamerthemeBerkeley.sty
beamerthemeBerlin.sty
beamerthemeBoadilla.sty
beamerthemeboxes.sty
beamerthemeCambridgeUS.sty
beamerthemeCopenhagen.sty
beamerthemeDarmstadt.sty
beamerthemedefault.sty
beamerthemeDresden.sty
beamerthemeEastLansing.sty
beamerthemeFrankfurt.sty
beamerthemeGoettingen.sty
beamerthemeHannover.sty
beamerthemeIlmenau.sty
beamerthemeJuanLesPins.sty
beamerthemeLuebeck.sty
beamerthemeMadrid.sty
beamerthemeMalmoe.sty
beamerthemeMarburg.sty
beamerthemeMontpellier.sty
beamerthemePaloAlto.sty
beamerthemePittsburgh.sty
beamerthemeRochester.sty
beamerthemeSingapore.sty
beamerthemeSzeged.sty
beamerthemeWarsaw.sty
beamerthemebars.sty
beamerthemeclassic.sty
beamerthemecompatibility.sty
beamerthemelined.sty
beamerthemeplain.sty
beamerthemeshadow.sty
beamerthemesidebar.sty
beamerthemesplit.sty
beamerthemetree.sty
\end{filecontents*}
\usepackage{xstring}
\begin{document}
% writer
\newwrite\writer
\immediate\openout\writer=list.txt\relax
% reader
\newread\reader
\openin\reader=rawdata.txt\relax
\makeatletter
\loop
\read\reader to \x
\unless\ifeof\reader
\filename@parse{\x}
\immediate\write\writer{\StrGobbleLeft{\filename@base}{11}}
\repeat
\makeatother
\closein\reader
\immediate\closeout\writer
\end{document}
Antwort1
\StrGobbleLeft
ist nicht erweiterbar, daher funktioniert es nicht innerhalb von \write
. Aber das Paket xstring
ist so freundlich, am Ende ein optionales Argument bereitzustellen. Wenn vorhanden, nimmt es einen Makronamen an, der das Ergebnis speichert.
\StrGobbleLeft{\filename@base}{11}[\Result]
\immediate\write\writer{\Result}
Antwort2
Sie benötigen ein Makro, das per Erweiterung funktioniert, wenn Sie es in den Schreibzugriff einfügen möchten, zum Beispiel:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{rawdata.txt}
beamerthemeAnnArbor.sty
beamerthemeAntibes.sty
beamerthemeBergen.sty
beamerthemeBerkeley.sty
beamerthemeBerlin.sty
beamerthemeBoadilla.sty
beamerthemeboxes.sty
beamerthemeCambridgeUS.sty
beamerthemeCopenhagen.sty
beamerthemeDarmstadt.sty
beamerthemedefault.sty
beamerthemeDresden.sty
beamerthemeEastLansing.sty
beamerthemeFrankfurt.sty
beamerthemeGoettingen.sty
beamerthemeHannover.sty
beamerthemeIlmenau.sty
beamerthemeJuanLesPins.sty
beamerthemeLuebeck.sty
beamerthemeMadrid.sty
beamerthemeMalmoe.sty
beamerthemeMarburg.sty
beamerthemeMontpellier.sty
beamerthemePaloAlto.sty
beamerthemePittsburgh.sty
beamerthemeRochester.sty
beamerthemeSingapore.sty
beamerthemeSzeged.sty
beamerthemeWarsaw.sty
beamerthemebars.sty
beamerthemeclassic.sty
beamerthemecompatibility.sty
beamerthemelined.sty
beamerthemeplain.sty
beamerthemeshadow.sty
beamerthemesidebar.sty
beamerthemesplit.sty
beamerthemetree.sty
\end{filecontents*}
\usepackage{xstring}
\begin{document}
% writer
\newwrite\writer
\immediate\openout\writer=list.txt\relax
% reader
\newread\reader
\openin\reader=rawdata.txt\relax
\makeatletter
\loop
\read\reader to \x
\unless\ifeof\reader
\filename@parse{\x}%
\def\zaptheme beamertheme{}%
\immediate\write\writer{\expandafter\zaptheme \filename@base}
\repeat
\makeatother
\closein\reader
\immediate\closeout\writer
\end{document}