\numexpr 안의 / 연산자는 truncate가 아니라 round입니다. TeX의 \divide와는 다릅니다. modulo를 구하기 위해 a-(a/b)*b하면 음수를 반환하게 되어서 문제가 생깁니다.
원하시는 목적을 위해서 \myMod를 하나 새로 정의하시지요.
\newcount\tmpcnt \def\myMod#1#2% {% \tmpcnt#1 \divide\tmpcnt by#2 \multiply\tmpcnt by#2 \ifnum0=\numexpr #1-\tmpcnt\relax #2\else \the\numexpr #1-\tmpcnt\relax \fi }
\ifnum 이후 코드는 나머지가 0일 때 나누는 수(예시된 7)를 출력해야 뜻대로 동작할 것 같아서 추가한 것입니다.
사족이지만 \value{section}을 쓰기 위한 목적이라면 \usepackage{ifthen}으로 되지 않을까 합니다.
Expl3라면 대략 다음과 같이 할 수 있는데요, 이게 좋은 점은 \int_mod:nn라는 function을 제공한다는 것입니다. 문서 클래스가 oblivoir이므로 \usepackage{xparse}를 따로 안 써도 됩니다.
\ExplSyntaxOn \NewExpandableDocumentCommand \myMod { m m } { \int_set:Nn \l_tmpa_int { \int_mod:nn { #1 } { #2 } } \int_compare:nTF { \l_tmpa_int == 0 } { #2 } { \int_use:N \l_tmpa_int } } \ExplSyntaxOff
KTUG 한국 텍 사용자 그룹
\numexpr 안의 / 연산자는 truncate가 아니라 round입니다. TeX의 \divide와는 다릅니다. modulo를 구하기 위해 a-(a/b)*b하면 음수를 반환하게 되어서 문제가 생깁니다.
원하시는 목적을 위해서 \myMod를 하나 새로 정의하시지요.
\ifnum 이후 코드는 나머지가 0일 때 나누는 수(예시된 7)를 출력해야 뜻대로 동작할 것 같아서 추가한 것입니다.
사족이지만 \value{section}을 쓰기 위한 목적이라면 \usepackage{ifthen}으로 되지 않을까 합니다.
Expl3라면 대략 다음과 같이 할 수 있는데요, 이게 좋은 점은 \int_mod:nn라는 function을 제공한다는 것입니다. 문서 클래스가 oblivoir이므로 \usepackage{xparse}를 따로 안 써도 됩니다.