KTUG 한국 텍 사용자 그룹

Menu

KTUG :: Q&A 마당

\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 한국 텍 사용자 그룹