\StrGobbleLeft 출력을 외부 파일에 쓰는 방법은 무엇입니까?

\StrGobbleLeft 출력을 외부 파일에 쓰는 방법은 무엇입니까?

나는 TeX 확장이 뒤에서 어떻게 작동하는지 배우지 못했습니다. 간단히 말하면 \StrGobbleLeft출력을 외부 파일에 쓰는 방법은 무엇입니까?

\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}

답변1

\StrGobbleLeft확장할 수 없으므로 내부에서는 작동하지 않습니다 \write. 하지만 패키지는 xstring마지막에 선택적 인수를 제공할 정도로 친절합니다. 존재하는 경우 결과를 저장하는 매크로 이름을 사용합니다.

\StrGobbleLeft{\filename@base}{11}[\Result]
\immediate\write\writer{\Result}

답변2

예를 들어 쓰기에 배치하려면 확장을 통해 작동하는 매크로가 필요합니다.

\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}

관련 정보