KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
You will be aided greatly by a person whom you thought to be unimportant.
FrontPage › xkeyval

r1.4과 현재 버전의 차이점

@@ -84,6 +84,11 @@
\ifthenelse{\boolean{KV@spec@HD}}{ ... }{ ...}
}}}

== 예제 ==
attachment:hoze-illustfigure.sty
attachment:hoze-illustfigure_exam.tex
attachment:hoze-illustfigure_exam.pdf



목차

1 변수 만들기
2 조건 변수 (boolean) 만들기
3 예제

1 변수 만들기

4 개의 길이 변수를 만들고 그것들을 설정하는 명령을 만들어 보자.

\newlength{\nodewidth}
\newlength{\nodeheight}
\newlength{\ynodedistance}
\newlength{\xnodedistance}

\newcommand\setnodelengths[4]{
\setlength{\nodewidth}{#1}
\setlength{\nodeheight}{#2}
\setlength{\ynodedistance}{#3}
\setlength{\xnodedistance}{#4}
}

\setnodelengths{12em}{20pt}{7.5mm}{5mm}

간단하다. 하지만 이 방식은 사용자에게 매개 변수의 순서를 외우도록 요구한다. 또한 반드시 네 개 변수 모두를 지정하도록 요구한다. 나중에 한 개의 변수 값만 바꿀 수 있지 않은가? xkeyval 패키지를 이용하여 매개 변수의 이름을 지정하고 값을 부여하는 방식으로 만들어 보자.
\RequirePackage{xkeyval}

\newlength{\nodewidth}
\newlength{\nodeheight}
\newlength{\ynodedistance}
\newlength{\xnodedistance}

\define@key{node}{nodewidth}{
        \setlength{\nodewidth}{#1}
}
\define@key{node}{nodeheight}{
        \setlength{\nodeheight}{#1}
}
\define@key{node}{xnodedistance}{
        \setlength{\xnodedistance}{#1}
}
\define@key{node}{ynodedistance}{
        \setlength{\xnodedistance}{#1}
}
\newcommand\setnodelengths[1]{
        \setkeys{node}{#1}
}

\setnodelengths{nodewidth=12em,nodeheight=20pt,xnodedistance=7.5mm,ynodedistance=7.5mm}

2 조건 변수 (boolean) 만들기


\define@boolkey{spec}{HD}[true]{}

\setkeys{spec}{HD}는 \setkeys{spec}{HD=true}와 같다.왜냐하면 디폴트로 true가 지정되어 있기 때문이다. 배타적인 변수를 하나 만들어보자.

\define@boolkey{spec}{SD}[true]{}

SD가 true로 지정된다면 HD가 false가 되어야 한다. 또 그 반대도 성립되어야 한다.

\define@boolkey{spec}{SD}[true]{
   \ifKV@spec@SD
     \setkeys{spec}{HD=false}
   \fi
}

\define@boolkey{spec}{HD}[true]{
   \ifKV@spec@HD
     \setkeys{spec}{SD=false}
   \fi
}

KV@spec@HD는 \define@boolkey에 의해 만들어지는 변수이다. 이것을 tex 파일에서 ifthen 패키지의 \ifthenelse 명령에도 당연히 쓸 수 있다.

\ifthenelse{\boolean{KV@spec@HD}}{ ... }{ ...}



^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-11-18 14:07:57
Processing time 0.0603 sec