최근 수정 시각 : 2025-02-17 22:57:12

조판 언어


1. 개요2. 마크업 언어와의 차이3. 목록

1. 개요

typesetting language

문서를 인쇄 및 출판하기 위해 활자를 배열하고 형식을 제어하는 기능을 하는 컴퓨터 언어의 종류.

2. 마크업 언어와의 차이

마크업 언어와 비교했을 때 가장 큰 차이는, 마크업 언어는 개별 마크업이 문서 내에서 독립적인 의미 구성 요소인 데에 비해 조판 언어는 실제 인쇄기나 타자기에서 글자를 정렬하고 공백을 삽입하는 것과 같이 출력을 그려내는 방법에 대한 절차를 순서대로(sequentially) 나열한다는 것으로, 패러다임적 구분을 적용하면 마크업은 선언적, 조판 언어는 절차적이라고 볼 수 있다.

가령, 가상의 조판 언어 T로 짧은 기사를 인쇄한다고 생각해 보자. 다음과 같이 쓸 수 있을 것이다.
<커서 정렬:중앙><글꼴:Serif><글꼴 크기:24pt>가지각색 나무의 번식 과정<커서 이동:아래로,40pt><글꼴 크기:16pt>세피로트 기자<커서 이동:아래로,32pt><커서 정렬:왼쪽><글꼴:고딕><글꼴 크기:14pt>나무는 여러 식물들 중 우리 주변에서 가장 흔히...

문서의 형식을 지키기 위해 인쇄 명령들을 절차적으로 나열하고 있음을 볼 수 있다. 반대로, 가상의 마크업 언어 M으로 같은 내용을 작성해 보자.
@제목(가지각색 나무의 번식 과정)
@저자(세피로트 기자)
@본문{
    나무는 여러 식물들 중 우리 주변에서 가장 흔히...
}

문서 구성 요소의 의미만 남기고, 해당 내용이 어떻게 표시되어야 하는지에 대한 정보는 모두 생략되어 소스가 한결 간결해졌다. 하지만 해당 의미들이 정확히 어떻게 출력되어야 하는지에 대한 정보도 소실되어 마크업 언어 소스만으로는 인쇄가 불가능해졌다는 단점도 생긴다. 보통의 경우 문서의 구체적인 출력 자체는 구현체가 독자적으로 해석할 수 있도록 책임을 이양하거나 별도의 스타일시트 레이어 등을 통해 마크업의 의미적 간결성을 유지하면서, 출력 형식은 분리하는 등의 방식을 사용하게 된다.

하지만 마크업 언어로도 해결할 수 없는 단점들은 존재한다. 특히 의미에 치중한 마크업 언어의 경우 확장이 어렵거나 원하는 대로 미세한 조정이 힘들다. 예를 들어 본문에서 학명을 표기하는 경우
리조포라속<커서 이동:아래로,3pt><글꼴:Serif><글꼴 형태:기울임><글꼴 크기:11pt>Rhizophora<커서 이동:위로,3pt><글꼴:고딕><글꼴 형태:초기화><글꼴 크기:14pt>에 속하는 맹그로브나무의 경우...
리조포라속Rhizophora에 속하는 맹그로브나무의 경우...
와 같이 렌더링될 본문 형식에 무제한에 가까운 저수준의 조절과 개입이 가능하지만, 마크업 언어의 경우 사전에 등록된 마크업이 원하는 출력을 지원하지 않는다면 사용자 레벨에서는 개입이 힘들다. 때문에 대부분의 범용적인 마크업 언어들도 별도의 레이어를 통한 개입을 허용하거나 지원하기에 그 경계는 흐릿한 편.

조판 언어도 상술한 단점을 극복하기 위해 주로 매크로 시스템 등 추가적인 레이어를 도입하는 경우가 흔하며, 시대적으로도 조판 언어가 의미적 마크업 언어보다 먼저 등장했음에도 다양한 시도와 언어가 등장함에 따라 마크업 언어와 조판 언어의 명확한 구분은 점점 어려워지거나 사실상 의미가 없어지고 있다. 굳이 구분하자면 조판 언어를 절차적 마크업 언어 유형의 일부로 생각할 수 있으나, 정의상으로는 조판 언어가 항상 마크업 언어의 부분집합은 아니기에 애매한 편.

3. 목록