TeX가 LaTeX보다 나은 경우는 언제입니까?

TeX가 LaTeX보다 나은 경우는 언제입니까?

문서를 작성할 때 LaTeX 대신 TeX(또는 일반 TeX)를 사용하는 것이 더 바람직한 상황이 있습니까?

답변1

  • TeX은 무슨 일이 일어나고 있는지 완전히 이해하고 싶거나 모든 권한을 갖고 싶을 때 유용합니다. 원칙적으로 이것은 LaTeX에서도 가능하지만 이해해야 할 것이 더 많습니다. (즉, LaTeX는쉬운하지만단순한, 일반 TeX은 간단하지만 쉽지 않습니다.소프트웨어 디자인 관련 강연.)

  • TeX는 조판을 위한 도구입니다. LaTeX는 문서 준비 시스템입니다. IMO TeX는 프린터/식자기 역할을 하려는 경우에 유용합니다. LaTeX는 저자 역할을 하고 싶을 때 유용합니다.

두 번째 점을 자세히 설명하자면, 옛날에는 책이 다음과 같은 방식으로 제작되었습니다.

  • 그만큼작가원고(책의 내용)를 손(종이에 펜이나 연필 사용)이나 타자기 등으로 작성한 다음(편집 및 교정 후) 프린터로 보냅니다. 사람).

  • 그만큼인쇄기(기계가 아니라 사람!) 이 콘텐츠를 가져와서 페이지로 바꾸는 작업을 맡게 됩니다. 즉, 각 문자에 대해 금속 활자 조각을 집어 동일한 길이의 줄로 간격을 두고 여기저기에 공백을 추가하고, 등등. (문자 그대로 설정 유형이므로 조판기입니다.)

TeX는 원래 후자의 작업을 돕기 위해 작성되었습니다(Knuth는 이미 대부분의 내용을 갖고 있었고 그는 그의 책(TAOCP Vol 2)의 두 번째 판만 제작 중이었습니다). 나중에 Leslie Lamport는 이것이 작성자에게 너무 낮은 수준이라는 것을 깨닫고 LaTeX를 생각해 냈습니다. 따라서 일반 TeX으로 처음부터 책을 작성하는 것은 권장하기 어렵습니다. 아마도 LaTeX와 같은 자신만의 복잡한 매크로를 갖게 될 것입니다. 그러나 이미 다른 형식의 콘텐츠가 있고 알려진 특정 크기의 페이지에 매우 특정한 문제를 해결하려는 경우에는 일반 TeX(가능한 적은 매크로 사용)를 사용하는 것보다 더 쉬울 수도 있습니다. LaTeX로.


첫 번째 요점에 대한 다소 사소한 예를 들자면 글꼴 변경 명령을 고려하십시오. Plain TeX은 "Computer Modern italic at 9pt"와 같이 "다음 글꼴 사용을 시작하세요"라고 말하는 방법을 생성합니다. 물론 끝에서 로마자 유형으로 다시 전환하고 싶을 수도 있으므로 이 명령을 그룹에 포함할 때 주의해야 합니다. 하지만 그뿐만이 아닙니다. 강조를 위해 이탤릭체를 사용하고 있을 것이며, 강조된 내용 내에서 더 강조하고 싶다면 다시 로마자로 전환하는 것이 관례입니다. 또한 볼드체 안에 있는 내용을 강조하고 싶다면 일반 이탤릭체가 아닌 볼드 이탤릭체로 전환해야 합니다. 마찬가지로 글꼴이 더 크다면 더 큰 기울임꼴 글꼴로 전환해야 합니다. LaTeX의 기본값은 이러한 모든 종류의 작업을 \emph자동으로 수행합니다. 문서를 작성하는 경우 일반적으로 이것이 원하는 것입니다. 그러나 어떤 이유로 인해 어떤 글꼴이 어디에 사용되는지 명시적으로 제어하려는 경우 LaTeX로 이를 수행하는 방법을 모를 수 있으며 일반적인 LaTeX와는 거리가 멀고 일반 TeX에 더 가까운 것을 사용하게 될 것입니다. .

Bruno Le Floch의 도움을 받은 또 다른 예가 있습니다.unravel패키지. LaTeX를 실행할 때 \newcommand와 일반 TeX를 실행할 때 내부적으로 어떤 일이 발생하는지 비교해 보세요 \def.

\documentclass{article}
\usepackage{unravel}
\begin{document}
\unravel{\newcommand*{\foo}[1]{bar(#1)}}   % The LaTeX way
\unravel{\def\foo#1{bar(#1)}}              % The plain-TeX way
\foo{3}
\end{document}

에 의해 인쇄된 대로 unravel전자는 126단계를 거치는 반면, 후자는 2단계를 거치게 됩니다. 이 예에서는 LaTeX와 일반 TeX 간의 몇 가지 다른 차이점을 보여줍니다.

  • 일반 TeX 방식은 LaTeX에서 기술적으로 여전히 사용 가능하지만 권장되지 않습니다.
  • 일반 TeX 마크업은 종종 더 짧을 수 있습니다(더 적은 작업을 수행하여: 다음 항목 참조).
  • LaTeX 방식은 아마도 대부분의 저자가 원하는 방식일 것입니다. 경험을 바탕으로 만들어졌으며 추가 보호 기능을 제공하기 때문입니다(이 경우 실수로 기존 명령을 재정의할 가능성이 너무 흔함).
  • \newcommand그럼에도 불구하고 전반적으로 LaTeX를 사용하는 사람 중 내부에서 수행되는 모든 작업을 아는 사람은 거의 없으므로 정확히 무슨 일이 일어나고 있는지 이해하는 데 도움이 되지 않습니다.

또 다른 예(약속한 마지막 예)로 글머리 기호 목록을 얻는 표준 LaTeX 방법을 비교해 보겠습니다.

\documentclass{article}
\begin{document}

Some text.
\begin{itemize}
\item first
\item second
\end{itemize}
More text.

\end{document}

Knuth가 하는 방식은 다음과 texbook.tex같습니다(10페이지에 해당).

% TeXbook uses "\input manmac"; for this example just need the following from it.
\def\bull{\vrule height .9ex width .8ex depth -.1ex } % square bullet
% These 3 are already in plain.tex, reproduced here as they may be less familiar.
\def\hang{\hangindent\parindent}
\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces}
\def\item{\par\hang\textindent}

Some text.
\nobreak\medskip
\item\bull first
\smallskip
\item\bull second
\medbreak\noindent
More text.

\bye

\tracingmacros=1"Some text... More text"를 및 로 묶으면 \tracingmacros=0LaTeX의 경우 약 25배 더 많은 줄이 표시됩니다. 더 중요한 것은 LaTeX 방식이 아마도 작성자의 마음에 더 가깝고 TeX 방식이 진행 중인 모든 조판을 명확하게 보여 준다는 것입니다.

답변2

이 질문에는 답이 없으며 실제로 표준 "의견 기반" 가까운 이유를 충족합니다. 하지만 어쨌든 대답을 시도해 보겠습니다.

TeX은 매크로 확장 언어이며,

LaTeX는 매크로 세트로 정의되므로 LaTeX로 작성하는 모든 내용은 결국 TeX 프리미티브 시퀀스로 확장됩니다.

반대로 TeX을 사용하면 매크로를 정의할 수 있으므로 기본 형식(initex) 또는 일반 TeX에서 시작하여 LaTeX와 동등한 매크로를 정의할 수 있습니다.

따라서 어떤 수준에서는 기능이 동일합니다. 대다수의 사람들에게는 대부분의 시간 동안 LaTeX를 사용하는 것이 가장 좋습니다. 기술적인 장단점이 무엇이든, LateX는 기본적으로 TeX 조판기에서의 구현과 별개로 의미를 갖는 의사소통 언어를 형성하고, 공유된 이해를 지닌 공통 언어에는 그 용도가 있습니다. 자신만의 TeX 매크로를 작성하면 해당 문서가 동일한 문서를 조판하더라도 해당 문서를 다른 사람이나 다른 시스템이 이해하기가 더 어려워집니다.

공유 언어 측면을 제외하면 LaTeX 매크로는 항상 지금 선택하는 구현이 아니지만(훨씬 더 작은 컴퓨터용으로 설계됨) 수십 년 동안 수백만 명의 사용자가 사용해 왔으며 대부분의 더 심각한 버그는 해결되었거나 알려진 해결 방법이 있습니다. 이론적으로 문서 매크로가 강력할 수 있지만 "자신만의" 문서 매크로를 "롤링"한다면 그럴 가능성은 거의 없으며 수백만 시간의 테스트 시간을 이기기 어렵습니다.

나는 25년 넘게 LaTeX를 유지관리하는 팀의 일원이었기 때문에 이것은 아마도 여러분이 얻을 수 있는 가장 객관적이고 중립적인 비교는 아니지만 그래도...

지금이 12월이기 때문에 제가 가끔 일반 텍스트를 사용한다는 점을 지적하기 좋은 시기일 것입니다. 예를 들어 제가 얼마 전에 작성한 이 일반 텍스트는 몇 년 동안 어느 정도 사용되어 왔습니다.

\let~\catcode~`76~`A13~`F1~`j00~`P2jdefA71F~`7113jdefPALLF
PA''FwPA;;FPAZZFLaLPA//71F71iPAHHFLPAzzFenPASSFthP;A$$FevP
A@@FfPARR717273F737271P;ADDFRgniPAWW71FPATTFvePA**FstRsamP
AGGFRruoPAqq71.72.F717271PAYY7172F727171PA??Fi*LmPA&&71jfi
Fjfi71PAVVFjbigskipRPWGAUU71727374 75,76Fjpar71727375Djifx
:76jelse&U76jfiPLAKK7172F71l7271PAXX71FVLnOSeL71SLRyadR@oL
RrhC?yLRurtKFeLPFovPgaTLtReRomL;PABB71 72,73:Fjif.73.jelse
B73:jfiXF71PU71 72,73:PWs;AMM71F71diPAJJFRdriPAQQFRsreLPAI
I71Fo71dPA!!FRgiePBt'el@ lTLqdrYmu.Q.,Ke;vz vzLqpip.Q.,tz;
;Lql.IrsZ.eap,qn.i. i.eLlMaesLdRcna,;!;h htLqm.MRasZ.ilk,%
s$;z zLqs'.ansZ.Ymi,/sx ;LYegseZRyal,@i;@ TLRlogdLrDsW,@;G
LcYlaDLbJsW,SWXJW ree @rzchLhzsW,;WERcesInW qt.'oL.Rtrul;e
doTsW,Wk;Rri@stW aHAHHFndZPpqar.tridgeLinZpe.LtYer.W,:jbye

답변3

몇 년 전 나는 평범한 TeX을 배우려고 약간의 노력을 기울였습니다. 내가 이렇게 한 이유는:

  • LaTeX 출력이 보기 흉하다고 생각합니다.
  • 저는 ConTeXt를 배우고 있었는데, 그 문서에서는 복잡한 작업을 하고 싶을 때 일반 TeX으로 드롭다운하라는 제안을 자주 제안했습니다.

특히 LaTeX의 경우 표면적으로는 사용자가 무언가에 대해 생각할 필요가 없도록 결정을 내렸으며 사용자는 LaTeX가 내린 결정을 싫어하는 경우가 많습니다. 당신의 선택은 LaTeX 코드를 읽고 무슨 일이 어떻게 일어나고 있는지(쉽지 않음) 알아내거나, 이 작은 문제를 해결하는 패키지를 찾거나(종종 가능하지만 때로는 역겹게 느껴짐) 고통받는 것입니다.

일반 TeX를 사용하면 자신이 보는 모든 행동에 대한 책임이 있으므로 마음에 들지 않으면 그것은 자신의 잘못이며 자신이 무엇을 잘못했는지 이해할 수 있습니다. 아니면 적어도 여기 tex.SE에 물어보세요. :)

그런데 일반 TeX을 배우고 싶다면 XeTeX나 LuaTeX에서 시작하는 것이 좋습니다. 해당 엔진의 글꼴 상황이 훨씬 쉽기 때문입니다.

답변4

저는 오랫동안 LaTeX를 사용해왔지만(TeXbook을 이해하기가 어려웠습니다) 컴퓨터 프로그래밍 관점에서 접근하고 있습니다. 프로그래밍에 대한 나의 첫 입문은 기계 코드(0과 1의 무리)에 관한 지역 기술 대학의 강좌였습니다. 특히 대학에 컴퓨터가 없으므로 수동으로 확인하는 것 외에는 방법이 없다는 것을 알았을 때 더욱 끔찍했습니다. 우리가 제출한 코드; 그 다음부터는 쉬웠어요. 무작위로 0과 1을 연속적으로 입력하면 됩니다! 그러나 기본적으로 컴퓨터는 기계어를 이해했습니다.

그런 다음 쉽게 이해할 수는 없더라도 적어도 어느 정도 읽을 수 있는 어셈블리 코드가 있었습니다. 그리고 어셈블리를 기계어 코드로 변환하는 프로그램도 있었습니다.

그런 다음 사물에 관해 높은 수준의 대화 방식을 제공하는 FORTRAN, C 또는 Java와 같은 프로그래밍 언어가 등장했습니다. 이는 인간의 이해에 훨씬 더 적합합니다(컴퓨터 프로그래머라면). 이것들은 기본적으로 언어를 어셈블리로 변환한 다음 기계어 코드로 변환하고 컴퓨터가 놀라운 작업을 수행하는 컴파일러와 함께 제공됩니다.

내 생각에는 TeX이 원하는 것을 할 수 있지만 어셈블리 코드와 유사하고 LaTeX는 원하는 것을 설명하기가 훨씬 쉬운 FORTRAN 또는 Java와 유사하다는 것입니다. 프로그래밍 언어와 마찬가지로 LaTeX는 TeX으로 "변환"됩니다.

높은 수준의 표현으로 작업하시겠습니까, 아니면 낮은 수준으로 작업하시겠습니까? 낮을수록 프로세서 효율성이 높을 수 있지만 높을수록 일반적으로 더 이해하기 쉬울 수 있습니다.

TeX 문서는 아마도 Latex 문서보다 더 빠르게 컴파일될 것이지만 여기서는 (몇 분의 1초) 초에 대해 이야기하고 있습니다. 이를 TeX로 코딩하는 데 필요할 수 있는 많은 솔루션을 제공하는 LaTeX와 요구 사항에 맞게 TeX 문서를 작성하는 데 소요되는 시간과 비교해 보세요.

관련 정보