Quando o TeX é melhor que o LaTeX?

Quando o TeX é melhor que o LaTeX?

Existe alguma situação em que seja preferível usar TeX (ou talvez TeX simples) em vez de LaTeX para escrever um documento?

Responder1

  • O TeX é útil quando você deseja entender completamente o que está acontecendo ou deseja ter controle total. Em princípio, isso também é possível com o LaTeX, mas há muito mais para entender. (Ou seja, LaTeX éfácilmas nãosimples, enquanto o TeX simples é simples, mas não é fácil.Palestra relacionada sobre design de software.)

  • TeX é uma ferramenta para composição tipográfica; LaTeX é um sistema de preparação de documentos. IMO TeX é útil quando você deseja desempenhar o papel de impressor/compositor; LaTeX é útil quando você deseja desempenhar o papel de autor.

Para elaborar o segundo ponto: Era uma vez, os livros eram produzidos da seguinte maneira:

  • Oautorescreveriam seu manuscrito (o conteúdo do livro) à mão (com caneta ou lápis no papel), ou com uma máquina de escrever, ou algo parecido, e então (após edição e revisão, etc.), o enviariam para uma gráfica (uma pessoa).

  • Oimpressora(uma pessoa, não uma máquina!) teria a tarefa de pegar esse conteúdo e transformá-lo em páginas: pegar pedaços de metal (para cada letra), espaçá-los em linhas de igual comprimento, adicionar espaços aqui e ali, e assim por diante. (Literalmente, tipo de configuração, então compositor.)

O TeX foi originalmente escrito para ajudar neste último trabalho (Knuth já tinha a maior parte do conteúdo; ele estava produzindo apenas a segunda edição de seu livro (TAOCP Vol 2)); mais tarde, Leslie Lamport percebeu que tudo isso era de nível muito baixo para os autores e criou o LaTeX. Portanto, é difícil recomendar escrever um livro do zero em TeX simples; você provavelmente acabará com suas próprias macros complexas, como o LaTeX. Mas se você já possui o conteúdo em outro formato e deseja apenas resolver um problema muito específico de páginas de um determinado tamanho conhecido, é possível que seja mais fácil fazê-lo usando TeX simples (usando o mínimo de macros possível) do que com LaTeX.


Para dar um exemplo um tanto trivial do primeiro ponto: considere os comandos de mudança de fonte. Plain TeX produz uma maneira de dizer "comece a usar a seguinte fonte", algo específico como "Computer Modern itálico em 9pt". É claro que você provavelmente deseja voltar para o tipo romano no final, então você precisa ter cuidado ao incluir este comando em um grupo. Mas não apenas isso: você provavelmente está usando itálico para dar ênfase, e se dentro de algo que está enfatizado você quiser enfatizar ainda mais, então a convenção é voltar para o tipo romano. Além disso, se quiser enfatizar algo em negrito, você não deve mudar para itálico regular, mas para negrito e itálico. Da mesma forma, se sua fonte for maior, você deve mudar para uma fonte maior em itálico. Todo esse tipo de coisa que o padrão do LaTeX \emphfaz automaticamente. Geralmente é isso que você deseja, se estiver escrevendo um documento. Mas se por algum motivo você quiser controlar explicitamente qual fonte é usada e onde, então você pode não saber como fazer isso com o LaTeX, e quando você descobrir que estará usando algo tão distante do LaTeX típico que está mais próximo do TeX simples .

Aqui está outro exemplo, graças ao trabalho de Bruno Le Flochunravelpacote. Compare o que acontece internamente quando você executa o LaTeX \newcommandcom o TeX simples \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}

Conforme impresso por unravel, o primeiro dá 126 passos, enquanto o segundo dá 2 passos. Este exemplo ilustra alguns outros pontos de diferença entre o LaTeX e o TeX simples:

  • A maneira simples do TeX ainda está tecnicamente disponível no LaTeX, apenas desencorajada.
  • A marcação Plain TeX geralmente pode ser mais curta (fazendo menos: veja o próximo ponto).
  • O método LaTeX é provavelmente o que a maioria dos autores deseja, pois nasce da experiência e fornece proteções adicionais (neste caso, contra a possibilidade muito comum de redefinir acidentalmente um comando existente).
  • Ainda assim, no geral, muito poucas pessoas que usam LaTeX estariam cientes de tudo o que \newcommandestá acontecendo nos bastidores, por isso é menos propício para entender exatamente o que está acontecendo.

Como mais um exemplo (o último eu prometo), compare uma maneira padrão do LaTeX para obter uma lista com marcadores:

\documentclass{article}
\begin{document}

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

\end{document}

com a maneira como Knuth faz isso texbook.tex(correspondente à página 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

Se você cercar "Algum texto... Mais texto" com \tracingmacros=1e \tracingmacros=0, obterá cerca de 25 vezes mais linhas no caso do LaTeX. Mais importante ainda, o modo LaTeX provavelmente está mais próximo da mente do autor, e o modo TeX mostra claramente toda a composição tipográfica que está acontecendo.

Responder2

A pergunta não tem resposta; na verdade, ela atende ao motivo próximo padrão "baseado em opinião". mas tentarei uma resposta de qualquer maneira.

TeX é uma linguagem de expansão macro e

LaTeX é definido como um conjunto de macros, então tudo o que você escreve em LaTeX se expande eventualmente para alguma sequência de primitivas do TeX.

Por outro lado, o TeX permite definir macros, portanto, começando apenas com os primitivos (initex) ou com o TeX simples, você pode definir macros equivalentes ao LaTeX.

Então, em algum nível, as capacidades são idênticas. Para a grande maioria das pessoas, na maior parte do tempo, é melhor usar o LaTeX, pois quaisquer que sejam os prós e os contras técnicos, o LateX basicamente forma uma linguagem de comunicação que tem um significado separado de sua implementação no compositor TeX, e da escrita em uma linguagem comum com um entendimento compartilhado tem suas utilidades. Se você escrever suas próprias macros TeX, mesmo que elas componham documentos equivalentes, esses documentos serão mais difíceis de serem entendidos por outros humanos e outros sistemas.

Além dos aspectos de linguagem compartilhada, as macros LaTeX nem sempre são a implementação que você escolheria agora (elas foram projetadas para máquinas muito menores), mas têm sido usadas por milhões de usuários há décadas e as chances são de que a maioria dos bugs mais sérios são corrigidos ou têm soluções alternativas conhecidas. Se você "criar suas próprias" macros de documentos, embora seja teoricamente possível que elas sejam tão robustas, é um tanto improvável, pois milhões de horas de trabalho em testes são difíceis de superar.

Como faço parte da equipe que mantém o LaTeX há mais de 25 anos, esta talvez não seja a comparação neutra mais objetiva que você poderia obter, mas ainda assim...

Como é dezembro, provavelmente é uma boa época do ano para ressaltar que às vezes eu uso texto simples, esse texto simples que escrevi há algum tempo teve algum uso ao longo dos anos, por exemplo.

\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

Responder3

Há alguns anos, me esforcei para aprender TeX simples. Eu fiz isso porque:

  • Acho a saída do LaTeX feia
  • Eu estava aprendendo o ConTeXt, e sua documentação geralmente sugere que você vá para o TeX simples quando quiser fazer algo complexo

Especificamente com o LaTeX, muitas vezes descubro que ele tomou alguma decisão, aparentemente para livrá-lo de ter que pensar em algo, e você não gosta da decisão tomada. Suas opções serão ler o código LaTeX e descobrir o que está acontecendo e como (o que não é fácil), encontrar um pacote que conserte essa pequena coisa (muitas vezes possível, mas às vezes parece nojento) ou sofrer.

Com o TeX simples, você é o responsável por qualquer comportamento que observar, então, se não gostar, a culpa é sua e você poderá entender o que fez de errado. Ou pelo menos pergunte aqui no tex.SE. :)

A propósito, se você quiser aprender TeX simples, eu recomendo que você comece com XeTeX ou LuaTeX porque a situação das fontes é muito mais fácil nesses motores.

Responder4

Sou usuário de LaTeX há muito tempo (achei difícil entender o TeXbook), mas estou abordando isso do ponto de vista da programação de computadores. Minha primeira introdução à programação foi um curso na faculdade técnica local sobre código de máquina (um monte de 0s e 1s) --- terrível, especialmente quando descobri que a faculdade não tinha computador e, portanto, não havia maneira, a não ser manualmente, de verificar o código que enviamos; depois disso foi fácil, basta entregar sequências de 0 e 1 aleatórios! Mas basicamente os computadores entendiam o código de máquina.

Depois, houve o código Assembly que pelo menos era um tanto legível, se não facilmente compreensível. E havia programas que convertiam Assembly em código de máquina.

Depois vieram linguagens de programação como FORTRAN, C ou Java, que forneciam maneiras de alto nível de falar sobre as coisas - muito mais sintonizadas com a compreensão humana (desde que você fosse um programador de computador). Eles vieram com compiladores que essencialmente converteriam a linguagem em Assembly e depois seriam convertidos em código de máquina e então o computador faria coisas maravilhosas.

Meu sentimento é que, embora o TeX possa fazer o que você quiser, ele é semelhante ao código Assembly, enquanto o LaTeX é semelhante ao FORTRAN ou Java, onde é muito mais fácil descrever o que você deseja. Assim como as linguagens de programação, o LaTeX é “convertido” para o TeX.

Você quer operar em alto nível de expressão ou em baixo nível? Mais baixo pode ser mais eficiente do processador, mas mais alto pode ser mais compreensível em geral.

Um documento TeX provavelmente será compilado mais rápido que um documento Latex, mas estamos falando aqui de (frações de) segundos. Compare isso com o tempo que você gasta criando um documento TeX para atender às suas necessidades versus o LaTeX, que fornece muitas das soluções que você pode precisar para codificar com o TeX.

informação relacionada