If.. then else 및 변수 뒤집기

If.. then else 및 변수 뒤집기

특정 방식으로 포맷된 디렉터리 내부에 파일을 자동으로 로드하는 템플릿을 작성하려고 하며 이전에 비어 있던 디렉터리에서 새 파일이 발견될 때마다 무언가를 인쇄하려고 합니다.

내 코드는 다음과 같습니다

\documentclass[11pt,twoside,a4paper]{article}
\usepackage{tikz}
\usepackage{etoolbox}

\usepackage[utf8]{inputenc}



\begin{document}


\foreach \Year in {2016,...,2020}
{
  \newtoggle{mytoggle}
  \toggletrue{mytoggle}

  \foreach \Month in {Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}
  {   \foreach \Day in {1,...,31}
    { \IfFileExists{\Year/\Month/\Day}
      {
        \iftoggle{mytoggle}{
          \togglefalse{mytoggle}
          true
        }{
          false
        }

        \input{\Year/\Month/\Day.tex}
      }
    }
  }
}
\end{document}

분기는 한 번만 호출될 것으로 예상 true하지만 매번 호출됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

감사해요

답변1

A는 그룹을 형성하기 때문에 a 이전 이나 a 내에 \foreach신청해야 합니다 .\global\toggletrue\togglefalse\foreach

아래 MEW 결과없이그만큼\global

여기에 이미지 설명을 입력하세요

그리고~와 함께:\global

여기에 이미지 설명을 입력하세요

노트:

  • \newtoggle를 선언할 필요가 없습니다 \foreach.

  • 뒤에 공백 foreach {이 추가될 수 있으므로 주의하세요. 보다Tex 용량 초과(매크로 사용 후 %를 제거한 경우).

  • 또한 와 같은 매크로를 사용하면 \IfFileExists다음을 포함해야 합니다.둘 다참과 거짓의 경우. {}아무것도 실행할 필요가 없는 경우에 사용하세요 . 제공하신 코드에는 이 내용이 없습니다.

  • 패키지filecontents 이 테스트 사례를 위해 읽을 파일을 설정하는 데 사용되었습니다. 실제 사용 사례에서는 필요하지 않습니다. 또한 MWE를 단순화하기 위해 추가 디렉터리가 필요하지 않도록 파일 이름 지정이 변경되었습니다.

암호:

\begin{filecontents}{2016-Mar-24.tex}
content for file 2016-Mar-24\par
\end{filecontents}
\begin{filecontents}{2016-Jul-10.tex}
content for file 2016-Jul-10\par
\end{filecontents}
\begin{filecontents}{2017-Dec-31.tex}
content for file 2017-Dec-31\par
\end{filecontents}


\documentclass[11pt,twoside,a4paper]{article}
\usepackage{tikz}
\usepackage{etoolbox}

\newtoggle{mytoggle}

\begin{document}
\foreach \Year in {2016,...,2020} {%
  \global\toggletrue{mytoggle}%
  %
  \foreach \Month in {Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec} {%   
      \foreach \Day in {1,...,31} {%
       \IfFileExists{\Year-\Month-\Day.tex}{%
            \iftoggle{mytoggle}{%
                true
                \global\togglefalse{mytoggle}%
            }{%
                false
                \global\toggletrue{mytoggle}%
            }%
            \input{\Year-\Month-\Day.tex}
      }{}%
    }% foreach \Day
  }% foreach \Month
}%
\end{document}

관련 정보