이라는 파일이 있습니다 _runs.ini
. 내용에 따라 문서가 다르게 컴파일됩니다. 내용을 읽으려고 시도했지만 \ifthenelse
성공하지 못한 채 -command를 실행했습니다.
내 MWE는 다음과 같습니다.
\documentclass{book}
\usepackage{ifthen}
\newcommand\getrun{%
\newread\tmp
\openin\tmp=_runs.ini
\read\tmp to \pruns
\def\ppruns{\numexpr \pruns\relax}
\closein\tmp
}
\newcommand\startrun{%
\ifthenelse{\equal{\ppruns}{0}}
{true}{false}
}
\begin{document}
\getrun
\startrun
\end{document}
의 내용은 _runs.ini
이지만 0
분명히 \equal
-command는 로 인식하지 않습니다 0
.
내가 도대체 뭘 잘못하고있는 겁니까?
답변1
그리고 원본에 대한 답변\ifthenelse
\documentclass{book}
\usepackage{ifthen}
\newcommand\getrun{%
\newread\tmp
\openin\tmp=_runs.ini
\read\tmp to \pruns
\def\ppruns{\numexpr \pruns\relax}
\closein\tmp
}
\newcommand\startrun{%
\ifthenelse{\equal{\pruns}{0 }}%<-- space!
{true}{false}
}
\newcommand\startrunb{%
\ifthenelse{\ppruns=0}
{true}{false}
}
\begin{document}
\getrun
\startrun
\startrunb
\end{document}
답변2
파일에 숫자가 포함되어 있다고 확신한다면 더 간단한 전략을 권장합니다.
\documentclass{book}
\newread\tmp
\newcommand\getrun{%
\openin\tmp=_runs.ini
\read\tmp to \pruns
\closein\tmp
}
\newcommand\startrun{%
\ifnum\pruns=0
true
\else
false
\fi
}
\begin{document}
\getrun
\startrun
\end{document}
또는 다음을 사용하여 catchfile
:
\documentclass{book}
\usepackage{catchfile}
\newcommand{\run}{%
\CatchFileDef{\pruns}{_runs.ini}{}%
\ifnum\pruns=0
true
\else
false
\fi
}
ifthen
원하는 경우 다음을 사용할 수도 있습니다 .
\documentclass{book}
\usepackage{ifthen}
\newread\tmp
\newcommand\getrun{%
\openin\tmp=_runs.ini
\read\tmp to \pruns
\closein\tmp
}
\newcommand\startrun{%
\ifthenelse{\pruns=0}{true}{false}
}
\begin{document}
\getrun
\startrun
\end{document}
답변3
패키지를 사용하는 이 답변은 readarray
파일의 단독 문자가 "0"인지 여부를 식별하도록 설정됩니다. 보다 복잡한 테스트가 필요한 경우(예: 파일이 단일 문자 이상일 수 있는 경우) 세부 사항을 알려주십시오.
이 \readdef
명령은 파일 내용을 에 배치한 \def
다음 직접 비교할 수 있습니다 \if
(여기서는 파일이 단일 문자라고 가정합니다).
\documentclass{article}
\usepackage{readarray}
\newcommand\getrun{\readdef{_runs.ini}{\mydata}}
\newcommand\startrun{\if0\mydata true\else false\fi}
\begin{document}
\getrun
\startrun
\end{document}
답변4
잊어버렸다 \ppruns
:
\usepackage{etoolbox}
\newcommand\startrun{%
\ifnumcomp{\pruns}{=}{0}{true}{false}
}
또는 더 나은 방법(일반 TeX!):
\newcommand\startrun{%
\ifnum\pruns=0
true
\else
false
\fi
}