유명한 집합 - LaTeX 코드를 높은 유지 보수성으로 설명하는 예
소개
이 기사는 최근 설립된 동대 TeX 애호회 '이번 주 매크로'의 두 번째 주 기사로 작성한 내용을 전용합니다. 또 Qiita에의 첫 투고라고 하는 것도 있어, 테스트를 겸하고 있습니다.
동기
"저기 많은 표준 명령을 기억하고 LaTeX에 익숙해져 온 사람"에게는 아직 약간 실감이 솟지 않을지도 모르지만, 장기간에 걸쳐 작성하거나 수정하는 문서를 작성할 때는 “문서 유지 보수 성의 높이”1가 요구되는 경우도 많지 않을까요? 즉, 나중에 전체를 쉽게 변경할 여지를 남긴 문서 작성을 의식할 필요가 나오는 것입니다. 아래에서는 마크 업성을 중시한 문서 작성의 생각에 대해 간단한 매크로 정의의 예로 살펴 보겠습니다.
실천
이번에는 그러한 “수정을 용이하게 한다” 발상의 극히 초보적인 예로서 유명한 집합을 쓰는 간단한 매크로를 소개합시다. 여기서 유명한 집합은 자연수2, 정수, 유리수, 실수, 복소수 등 라틴 문자 1자로 쓰여지는 집합입니다. "정상적으로"한다면, 예를 들어
$n \in \mathbf{N}^{+}$,$p \in \mathbf{Q}$,$x \in \mathbf{R}$ とする.$
라는 코드를 처리함으로써
로 출력할 수 있습니다. 그러나 이러한 집합의 기법에는 여러 가지 유의가 있습니다. 어쩌면 나중에 "굵게 이탤릭해야합니다"라는 요청이 있습니다.
라고 수정하거나 혹은 「칠판 굵게 하고 싶으면」3라는 의뢰가 있어
수정할 수 있습니다. 이렇게 되면 이러한 집합에 사용된 모든 \mathbf
를 \bm
로 바꿔야 합니다만, 집합 이외에서도 \mathbf
를 사용하고 있으면 단순한 문자열 치환으로는 끝나지 않게 해서 수정 힘들다.
그래서, 처음에 내세운 것처럼 “단순히 출력하기 위한 쓰는 방법”을 하는 것이 아니라, 우선
my-style.sty\def\usebbsetcapital{\def\setcapital##1{\mathbb{##1}}}
\def\usebfsetcapital{\def\setcapital##1{\mathbf{##1}}}
\def\usebmsetcapital{\def\setcapital##1{\bm{##1}}}
\usebfsetcapital
\def\setC{\setcapital{C}}
\def\setH{\setcapital{H}}
\def\setN{\setcapital{N}}
\def\setNpos{\setcapital{N}^{\mathord{+}}}
\def\setP{\setcapital{P}}
\def\setQ{\setcapital{Q}}
\def\setR{\setcapital{R}}
\def\setRpos{\setcapital{R}^{\mathord{+}}}
\def\setZ{\setcapital{Z}}
라는 스타일 파일을 저장합니다. 이것을 사용하여 실제로 설명하는 문서
my-document.tex\documentclass{jsarticle}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{my-style}
\begin{document}
\indent
$n \in \setNpos$,$p \in \setQ$,$x \in \setR$ とする.
\par
\end{document}
로 처리하면,
와 같이 출력됩니다만, 이것이 최초의 “단순히 출력하기 위한 쓰는 방법”과 다른 것은, 프리앰블 4의 \usepackage{my-style}
이후에
\usebmsetcapital
추가하고 처리하기만 하면
그리고 모두 수정된 출력이 되는 점입니다. 즉, 처음부터 복수의 기술 방법을 취할 수 있는 것은 일제히 변경할 수 있는 구조로 해 두자는 생각입니다. 의미를 명시한 (시맨틱한) 커멘드명으로 해 두면, 코드도 보기 쉬워져, 일거 양득!
다만, 시맨틱한 코드를 목표로 하는 별로 복잡한 매크로화를 실시해 버리면, 이번에는 치는 것이 힘들어지므로, 적당한 범위에 두어 두는 것을 추천합니다.
일반적으로 서비스 가능성이라고합니다. ↩
0은 자연수입니다. ↩
다만 「칠판 굵은 글씨는 필기에 사용되는 글자체이며 인쇄에 사용하는 대물이 아니다」라고 하는 주장이 있어, TeX의 작자 Donald. E. Knuth도 활자로서 칠판 굵게를 사용하는 것에는 고언을 나타내고 있는 것 같다 입니다. ↩
\documentclass{...}
와 \begin{document}
사이의 부분을 나타냅니다. ↩
Reference
이 문제에 관하여(유명한 집합 - LaTeX 코드를 높은 유지 보수성으로 설명하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gfngfn/items/cb76cf01c372b7ccb4a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"저기 많은 표준 명령을 기억하고 LaTeX에 익숙해져 온 사람"에게는 아직 약간 실감이 솟지 않을지도 모르지만, 장기간에 걸쳐 작성하거나 수정하는 문서를 작성할 때는 “문서 유지 보수 성의 높이”1가 요구되는 경우도 많지 않을까요? 즉, 나중에 전체를 쉽게 변경할 여지를 남긴 문서 작성을 의식할 필요가 나오는 것입니다. 아래에서는 마크 업성을 중시한 문서 작성의 생각에 대해 간단한 매크로 정의의 예로 살펴 보겠습니다.
실천
이번에는 그러한 “수정을 용이하게 한다” 발상의 극히 초보적인 예로서 유명한 집합을 쓰는 간단한 매크로를 소개합시다. 여기서 유명한 집합은 자연수2, 정수, 유리수, 실수, 복소수 등 라틴 문자 1자로 쓰여지는 집합입니다. "정상적으로"한다면, 예를 들어
$n \in \mathbf{N}^{+}$,$p \in \mathbf{Q}$,$x \in \mathbf{R}$ とする.$
라는 코드를 처리함으로써
로 출력할 수 있습니다. 그러나 이러한 집합의 기법에는 여러 가지 유의가 있습니다. 어쩌면 나중에 "굵게 이탤릭해야합니다"라는 요청이 있습니다.
라고 수정하거나 혹은 「칠판 굵게 하고 싶으면」3라는 의뢰가 있어
수정할 수 있습니다. 이렇게 되면 이러한 집합에 사용된 모든 \mathbf
를 \bm
로 바꿔야 합니다만, 집합 이외에서도 \mathbf
를 사용하고 있으면 단순한 문자열 치환으로는 끝나지 않게 해서 수정 힘들다.
그래서, 처음에 내세운 것처럼 “단순히 출력하기 위한 쓰는 방법”을 하는 것이 아니라, 우선
my-style.sty\def\usebbsetcapital{\def\setcapital##1{\mathbb{##1}}}
\def\usebfsetcapital{\def\setcapital##1{\mathbf{##1}}}
\def\usebmsetcapital{\def\setcapital##1{\bm{##1}}}
\usebfsetcapital
\def\setC{\setcapital{C}}
\def\setH{\setcapital{H}}
\def\setN{\setcapital{N}}
\def\setNpos{\setcapital{N}^{\mathord{+}}}
\def\setP{\setcapital{P}}
\def\setQ{\setcapital{Q}}
\def\setR{\setcapital{R}}
\def\setRpos{\setcapital{R}^{\mathord{+}}}
\def\setZ{\setcapital{Z}}
라는 스타일 파일을 저장합니다. 이것을 사용하여 실제로 설명하는 문서
my-document.tex\documentclass{jsarticle}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{my-style}
\begin{document}
\indent
$n \in \setNpos$,$p \in \setQ$,$x \in \setR$ とする.
\par
\end{document}
로 처리하면,
와 같이 출력됩니다만, 이것이 최초의 “단순히 출력하기 위한 쓰는 방법”과 다른 것은, 프리앰블 4의 \usepackage{my-style}
이후에
\usebmsetcapital
추가하고 처리하기만 하면
그리고 모두 수정된 출력이 되는 점입니다. 즉, 처음부터 복수의 기술 방법을 취할 수 있는 것은 일제히 변경할 수 있는 구조로 해 두자는 생각입니다. 의미를 명시한 (시맨틱한) 커멘드명으로 해 두면, 코드도 보기 쉬워져, 일거 양득!
다만, 시맨틱한 코드를 목표로 하는 별로 복잡한 매크로화를 실시해 버리면, 이번에는 치는 것이 힘들어지므로, 적당한 범위에 두어 두는 것을 추천합니다.
일반적으로 서비스 가능성이라고합니다. ↩
0은 자연수입니다. ↩
다만 「칠판 굵은 글씨는 필기에 사용되는 글자체이며 인쇄에 사용하는 대물이 아니다」라고 하는 주장이 있어, TeX의 작자 Donald. E. Knuth도 활자로서 칠판 굵게를 사용하는 것에는 고언을 나타내고 있는 것 같다 입니다. ↩
\documentclass{...}
와 \begin{document}
사이의 부분을 나타냅니다. ↩
Reference
이 문제에 관하여(유명한 집합 - LaTeX 코드를 높은 유지 보수성으로 설명하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gfngfn/items/cb76cf01c372b7ccb4a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$n \in \mathbf{N}^{+}$,$p \in \mathbf{Q}$,$x \in \mathbf{R}$ とする.$
\def\usebbsetcapital{\def\setcapital##1{\mathbb{##1}}}
\def\usebfsetcapital{\def\setcapital##1{\mathbf{##1}}}
\def\usebmsetcapital{\def\setcapital##1{\bm{##1}}}
\usebfsetcapital
\def\setC{\setcapital{C}}
\def\setH{\setcapital{H}}
\def\setN{\setcapital{N}}
\def\setNpos{\setcapital{N}^{\mathord{+}}}
\def\setP{\setcapital{P}}
\def\setQ{\setcapital{Q}}
\def\setR{\setcapital{R}}
\def\setRpos{\setcapital{R}^{\mathord{+}}}
\def\setZ{\setcapital{Z}}
\documentclass{jsarticle}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{my-style}
\begin{document}
\indent
$n \in \setNpos$,$p \in \setQ$,$x \in \setR$ とする.
\par
\end{document}
\usebmsetcapital
Reference
이 문제에 관하여(유명한 집합 - LaTeX 코드를 높은 유지 보수성으로 설명하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gfngfn/items/cb76cf01c372b7ccb4a9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)