TexToIDL : IDL 그래픽 수학기호

이 글은, 2005년에 제가 idluser.org에 올렸던 내용입니다. 최근 게시판에 올라온 질문과 관련이 있어, 이 기회에 새 사이트로 글을 옮겨 적습니다. 오랜만에 이 멋진 함수를 만든 Matthew W. Craig 박사님의 홈페이지를 가 보았는데, 거의 10년이 지난 지금도 버전 2.1.2에서 업데이트가 되지는 않고 있네요. 사실 이제 업데이트 할 필요성도 없어 보입니다.
IDL 8.0부터는 조금 다른 방식으로 IDL 그래픽에 수학 기호를 넣을 수 있게 되었는데요, 그럼에도 Direct Graphics에서는 TexToIDL이 더 편리합니다. IDL 8.0의 방식에 대해서는 다른 글을 통해 소개해 드리도록 하겠습니다.

질문/답변 게시판에서 관련 질문이 있어 글을 옮기던 중, 제 업무를 하다가 TexToIDL로 문제를 처리하게 되었습니다. 여전히 유용하고 든든한 프로그램이네요. Thanks, Dr. Matthew Craig!

—————————————–
IDL 그래픽 수학 기호, TexToIDL (이종혁 2005. 3. 14.)

함수이름 : TexToIDL
패키지 : textoIDL 2.1.2
제작자 : Matthew W. Craig
프로그램 배포 : http://physics.mnstate.edu/craig/textoidl/
목적 : IDL 그래픽에 수학기호 입력을 간편하게 하기 위하여 수식 입력의 표준격인 TeX의 방식을 지원하도록 한다.

TexToIDL을 배포하는 페이지. 버전업은 필요치 않아서 옛버전 그대로.

TexToIDL을 배포하는 페이지. 버전업은 필요치 않아서 10년 전 버전 그대로.

IDL 그래픽 시스템에 수학기호를 넣어야 할 일이 많이 있을 것입니다. IDL이 그쪽 분야의 일을 처리하기 위해 만들어진 언어이기 때문입니다. 그런데 의외로 IDL 그래픽에 수학기호를 입력해 본 사람은 많지 않습니다. 대개 다른 알파벳 문자로 대치해서 대충 넘어가더군요.

다음을 입력해 보세요.

IDL> xyouts, 0, .2, $
‘!MI!S!A!E!8x!R!B!Ip!N !7q!Ii!N!8U!S!E2!R!Ii!Ndx’, $
size=3, /normal

 

IDL 그래픽 체계에서 어느 정도의 수학기호, 수학식 표출은 지원합니다.

IDL 그래픽 체계에서 어느 정도의 수학기호, 수학식 표출은 지원합니다.

오~ 뭔가 그럴듯한 수식도 출력할 수 있다는 것은 확인되었습니다. 그런데 입력된 문자열이 무슨 암호문 같군요.

이 암호 문자에 대한 해독은 IDL Reference Guide의 맨 뒤쪽의 부록 부분에 자세히 나와 있습니다. IDL 표준문서인 refguide.pdf 파일의 Appendix H. Font 부분을 찾아 보면 됩니다. IDL 버전 6.1 배포본에 포함된 PDF 파일에서는 4438페이지입니다(꼭 지금 찾아보지 않아도 됩니다).

자 이제, 두가지를 알았습니다.

1. IDL에서 수학기호를 쓰려면 느낌표가 난무하는 암호문을 써야 한다.
2. 암호문이 뭔 소린지는 난 모르겠다.

자, 여기서 끝나면 김 새는 거지요. 해결책이 두가지가 있겠군요.

1. 저 암호 대응표를 다 외우겠다.
2. 설마… 그거 말고 뭔가 살 길이 마련되어 있지 않을까?

1번을 선택하신 분들은 지금부터 IDL Reference Guide의 Font 표를 펴시면 됩니다.
2번을 선택하신 분들은 첨부된 파일을 다운로드 받으시고 압축을 풀어 IDL 자동 검색 경로 내에 복사해 놓으면 됩니다.

2번 선택자들을 위하여.

IDL> print, textoidl(‘\rho_{i}’)              ; \는 역슬래시
!7q!X!Di!N

1번 해결책에 대해 아직도 미련을 버리지 못하는 컴퓨터 중독자들을 위해 간단히 설명하자면,
!7 : 그리스어 폰트를 사용하라.
q : 그리스어 폰트에서 rho에 대응
!X : 폰트를 다시 원대대로
!D : 아래 첨자
i : i
!N : 글자 크기 원래대로.
이런 암호입니다. textoidl 함수가 ‘\rho_{i}’ 문자열을 IDL 암호로 변환하였습니다.

해결책 2번의 정체가 이것입니다. 우리 과학자들에게 익숙한 수식 입력 체계인 TeX 처럼 입력하면 IDL의 암호로 변환해 주는 함수, textoIDL을 이용하는 것입니다.

IDL> plot, indgen(10), xtitle=textoidl(‘Area \Phi (cm^2)’), $
ytitle=textoidl(‘Scatter \sigma’), $
title=textoidl(‘Scatter for \Phi_{x,y}’)

IDL> xyouts, 1, 6, $
textoidl(‘\phi \propto \angleabc (\xi \rightarrow \infty)’), $
charsize=1.5

TexToIDL을 이용하여 수학기호를 훨씬 쉽게 그려 넣을 수 있습니다.

TexToIDL을 이용하여 수학기호를 훨씬 쉽게 그려 넣을 수 있습니다.

나는 \rightarrow나 Phi 도 암호 처럼 보이는데요?
함수 이름 textoIDL에서 보듯이, 이 함수에 입력되는 문자열은 TeX이라는 문서 작성기에서 수식을 입력할 때 쓰는 기호와 같습니다. TeX은 과학자들이 논문을 쓰는 데 표준이 되는 문서작성기이고 ‘한글’ 워드프로세서의 수식 입력 방법도 그 근간은 TeX에 있기 때문에 둘 중 하나에 익숙한 경우라면 textoIDL의 기호들을 지금 당장이라도 친숙하게 쓸 수 있을 것입니다. 또, 이런 방식이 처음이어서 사용이 서툴다고 해도 이 정도 수준의 TeX에 익숙해 지는 건 간단한 일이고, 한번 배워 두면 꽤 쓸모가 있습니다(과학 기술 분야를 떠나지 않는 한).

TeX 처음 사용자들이라면 TeX 기호들이 생각나지 않을 때, showtex 프로시저를 사용하면 됩니다.

IDL> showtex

showtex 프로시저의 실행 결과.

showtex 프로시저의 실행 결과.

PostScript 출력도 됩니까?
네. Postscript 출력도 똑같이 적용할 수 있습니다.

IDL> set_plot, ‘ps’
IDL> device, filename=’test.ps’
IDL> plot, findgen(10)
IDL> xyouts, 2,5, textoidl(‘\Gamma \sim 3^\circ’), charsize=3
IDL> device, /close
IDL> set_plot, ‘win’

Postscript에서 Vector Font로 TexToIDL 사용 예.

Postscript에서 Vector Font로 TexToIDL 사용 예.

디폴트는 위와 같은 벡터 폰트를 사용하지만, FONT=0 키워드를 사용하면 Hardware 폰트를 사용할 수 있습니다.

IDL> xyouts, 2,5, textoidl(‘\Gamma \sim 3^\circ’, font=0), charsize=3, font=0

Postscript에서 Hardware Font로 TexToIDL 사용

Postscript에서 Hardware Font로 TexToIDL 사용 예.

Hardware 폰트는 포스트스크립트에서만 사용할 수 있습니다.