현재 버전의 mplibcode 환경은 수직(vertical) 모드에서 수평(horizontal) 모드로 진입하지 않습니다. 중앙 정렬은 수평 모드에서만 의미가 있습니다. 따라서 \begin{center} 뒤에 \leavevmode 를 추가해서 수평 모드로 전환하면 원하는 결과를 얻을 수 있습니다. mplibcode 시작시 항상 \leavevmode가 실행되게 만들 수도 있지만 원저자(한스 하겐)의 코드에 없었으므로 최소변경의 원칙에 따라 그냥 두었습니다.
for ... endfor 루프 안에 btex ... etex 코드가 들어갈 것을 미처 예상하지 못했습니다. 버그를 찾아셨습니다. 해결책은 luamplib.sty 파일 43번째 줄 mplibputtextbox 매크로에서 \box를 \copy로 바꾸는 것입니다. 조만간에 CTAN에 새로 릴리스해야겠군요.
- \def\mplibputtextbox#1{\vbox to 0pt{\vss\hbox to 0pt{\raise\dp#1\box#1\hss}}} + \def\mplibputtextbox#1{\vbox to 0pt{\vss\hbox to 0pt{\raise\dp#1\copy#1\hss}}}
원래의 metapost에서 라벨에 변수를 적용하는 것이 가능하다면 심각하게 고민해 보겠습니다. metapost에 문외한인 제 입장에서는 사실 엄두조차 나지 않습니다. 도움 주실 분을 찾습니다.
- \def\mplibputtextbox#1{\vbox to 0pt{\vss\hbox to 0pt{\raise\dp#1\box#1\hss}}}
+ \def\mplibputtextbox#1{\vbox to 0pt{\vss\hbox to 0pt{\raise\dp#1\copy#1\hss}}}