AfonsoPortuga / abntex2

Automatically exported from code.google.com/p/abntex2
1 stars 0 forks source link

AbnTeX com plain TeX #113

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Which component is your suggestion addressed to?
[ ] class
[ ] packages
[ ] bibliography style
[ ] documentation
[ ] examples
[x] other: _____________

What is you suggestion?

Tenho usado o plain TeX (TeX puro) para editar um livro e minha tese de 
doutorado. Não apenas eu, mas é utilizado por outras pessoas também. A 
vantagem é que posso ter um controle muito maior do que é feito, através da 
criação de macros, e menos linhas de código do que o LaTeX.

Aí surge um problema: o ABNTeX só funciona com LaTeX, infelizmente. Assim, 
sugiro a adaptação do ABNTeX para uso com o plain TeX. Seria uma "versão 
para plain TeX". Seria possível ou teria alguém interessado? Posso contribuir 
auxiliando no código.

No caso, seria apenas a parte concernente ao bibTeX, não o modelo todo.

Additional information:

Original issue reported on code.google.com by lrsilve...@gmail.com on 14 Apr 2014 at 2:54

GoogleCodeExporter commented 9 years ago
No caso, acredito que você poderia usar diretamente os arquivos 
abntex2-num.bst e abntex2-alf.bst, que são as instruções diretamente em 
BibTeX. Você não precisa do pacote abntex2cite.sty.

Por favor, veja se isso atende às suas necessidades e avise-nos para que 
fechemos esta issue.

Curiosidade: o que exatamente você quer dizer com TeX puro? Poderia enviar um 
exemplo de documento?

Obrigado! Abraços!

Original comment by laurocesar on 14 Apr 2014 at 10:47

GoogleCodeExporter commented 9 years ago
  Com TeX puro (ou TeX simples), em inglês "plain TeX", quero dizer o TeX como descrito no livro do autor do TeX, o TeXbook, de Donald Knut. O LaTeX veio bem depois, com Leslie Lamport. A utilização do TeX (ao invés de LaTeX), por ser um nível mais baixo, permite um maior controle da tipografia do documento.

Por exemplo, no LaTeX, uma função é descrita como: 
\newcommand{cmd}[args]{def}; e no TeX como: \def\cmd{def}.

Um exemplo tirado do livro do Knut:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\hrule
\vskip 1in
\centerline{\bf A SHORT STORY}
\vskip 6pt
\centerline{\sl by A. U. Thor}
\vskip .5cm
Once upon a time, in a distant
galaxy called \"O\"o\c c,
there lived a computer
named R.~J. Drofnats.
Mr.~Drofnats---or ‘‘R. J.,’’ as
he preferred to be called---
was happiest when he was at work
typesetting beautiful documents.
\vskip 1in
\hrule
\vfill\eject
\bye
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Salvar como, por exemplo, story.tex

Compilar desse modo: tex story.tex
Depois: dvipdfm story.dvi
para converter o dvi pra pdf

Uma vantagem que percebi logo de cara com o TeX é a precisão das medidas. Se 
entro no código com \vskip 2cm no TeX, depois de impresso o documento, e meço 
com a régua, vai ter exatamente 2cm. Isso já não acontece com o LaTeX. Após 
impresso, se medir com a régua a medida será maior que 2cm. Também os 
comandos \leftskip, \vskip, etc., no LaTeX não são precisos, é preciso de um 
pacote (geometry) para poder obter medidas exatas de margem.

Com relação ao bibTeX, não dá pra usar diretamente os arquivos .bst. Tal 
qual em LaTeX, é preciso de um código extra, que vai interpretar esses 
arquivos. Mas esse código extra precisaria ser escrito em TeX, de acordo com 
as definições no livro do Knut.

Eu tenho um exemplo de código com uso de bibtex no TeX, que encontrei na 
internet, mas com referẽncias numéricas, não alfabéticas. Eu precisaria de 
referências alfabéticas, e claro, utilizando o abntex2-alf.bst. Posso enviar 
o exemplo caso deseje. Só preciso dar uma enxugada no código antes, pra ficar 
mais claro. Porém, no caso, utilizei um .bst numérico que eu mesmo criei com 
o makebst (pois o código que encontrei só funciona para .bst feito para 
referẽncias numéricas); a ideia é utilizar o modelo abntex alfabético. 
Ainda não experimentei o código com o abntex2-num.bst (o numérico). Acredito 
que não funcione 100%, pois precisaria de um código específico para 
interpretá-lo.

Original comment by lrsilve...@gmail.com on 14 Apr 2014 at 3:31

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Preparei um exemplo simples com uns testes que fiz com os arquivos 
abntex2-num.bst e abntex2-alf.bst, em anexo.

Ainda seria preciso adaptar os códigos dos arquivos .sty para rodar no plain 
TeX e assim formatar a saída corretamente nas normas ABNT. Eu precisaria do 
correspondente às seguintes opções do LaTeX:

\usepackage[alf,abnt-repeated-title-omit=yes,abnt-show-options=warn,abnt-emphasi
ze=bf,abnt-etal-list=0]{abntex2cite}

porém adaptado ao plain TeX. Para o bibtex funcionar no TeX é preciso do 
macro btxmac inclusa.

Para compilar o exemplo:

tex exemplo.tex
bibtex exemplo
tex exemplo.tex
tex exemplo.tex
dvipdfm exemplo

Original comment by lrsilve...@gmail.com on 15 Apr 2014 at 5:39

Attachments:

GoogleCodeExporter commented 9 years ago
Creio que teria que adaptar o estilo abntex2-alf.bst. Com o estilo 
abntex2-num.bst, a bibliografia é formatada corretamente, mas as chamadas no 
texto, não. 

Você teria que adaptar os estilos .bst e formatar as chamadas no texto -- ver 
http://tug.org/eplain/doc/eplain.html#Citations.

Entendo que é só um exemplo, mas mesmo assim, seria utilizado menos código 
(e menos texto) para gerar um documento assim, segundo as normas ABNT, 
utilizando LaTeX e o pacote abntex2. 

======
Tenho notado que há estilos bibtex que funcionam.

Tem que usar \input btxmac:

\input btxmac
%\input eplain

The \TeX{}book~\cite{knuth:tex} is good.
\medskip

\leftline{\bf Refer\^{e}ncias}

\bibliography{mybib}

\bibliographystyle{abntex2-num.bst}

\bye

Arquivo mybib.bib:

@BOOK{knuth:tex,
author = "Donald E. Knuth",
title = "The {\TeX}book",
publisher = "Addison-Wesley",
year = "1984",
}

Compilando pdftex + bibtex + pdftex funciona normalmente.

Não é preciso compilar para .dvi e depois para .pdf: pdftex faz isso direto.

Também não sei se é possível especificar a codificação -- e escrever 
todos os acentos como comandos é inviável. Há outras modificações que 
deveriam ser feitas -- para inserir hifenização etc. É muito incômodo para 
pouco benefício. Se houver algum benefício tangível, ficaria contente em 
saber.

Tenho dúvidas quanto a se o usuário final acabaria utilizando "menos código" 
do que em Latex. Em teoria, o "programador" ou usuário final teriam mais 
trabalho. Veja, por exemplo, criar um sumário: 
http://tex.stackexchange.com/questions/157056/creating-my-own-tableofcontents-in
-plain-tex

Ou inserir imagens: 
http://tex.stackexchange.com/questions/63789/inserting-an-image-in-plain-tex.

Enfim, quanto às medidas, fiz um teste com o \vskip 2cm, utilizando um 
documento básico, e na verdade a distância fica, sim, a *exatos 2 cm*, 
horizontal ou verticalmente (de uma linha-base a outra).

\documentclass{article}
\usepackage[brazil]{babel}
\usepackage{lmodern}
\usepackage{lineno}

\begin{document}

\linenumbers

Uma linha.
\vskip 2 cm
Uma linha.
\vskip 2 cm
Uma linha.
\vskip 2cm
Uma linha.
\vskip 2cm
Uma linha.
\vskip 2cm
Uma linha.
\vskip 2cm
Uma linha.
\vskip 2cm
Uma linha.
\vskip 2cm
Uma linha.
\vskip 2cm

I \hskip 2cm I

\end{document}

Original comment by yche...@gmail.com on 15 Apr 2014 at 9:36

GoogleCodeExporter commented 9 years ago
No documento "abntex2cite-alf.pdf", no item 4.1, diz: "Se você quiser usar 
apenas o estilo bibliográfico, e não utilizar o esquema de citações, 
selecione com o comando:

\bibliographystyle{abnt-alf}

(inclusive precisam corrigir no documento, pois é "abntex2-alf")

mas esteja avisado que nesse caso as chamadas no texto não estarão em 
conformidade com a ‘norma’.
Dessa forma, as citações no texto não estarão em conformidade com as normas 
brasileiras, porém a bibliografia será formatada corretamente."

Assim, creio que é preciso adaptar também o arquivo que contém o esquema de 
citações "abntex2cite.sty" para uso no TeX. Até porque instruções como 
\citeonline são definidas nesse arquivo. Também, o "default" para texto 
grifado na bibliografia é itálico, e eu precisaria de normal negrito. 
Precisaria de um resultado semelhante ao obtido quando utilizo isso no LaTeX:

\usepackage[alf,abnt-repeated-title-omit=yes,abnt-show-options=warn,abnt-emphasi
ze=bf,abnt-etal-list=0]{abntex2cite}

Compilar com pdftex realmente é o caminho mais simples pra chegar no arquivo 
.pdf. Mas curiosamente, compilar com tex e converter com dvipdfm, o .pdf fica 
com um tamanho menor. Não sei a explicação. Costumo usar ora um, ora outro.

=========

Quanto à questão TeX versus LaTeX:

Não era minha pretensão entrar nesse assunto, neste tópico. Daria outro 
tópico, pois haveria muito o que discutir e trocar ideias. Mas já que 
acabamos entrando no assunto, vamos lá...
Existe na internet longas discussões sobre as preferências em usar o LaTeX ou 
o TeX original, cada  um defendendo seu ponto de vista: 
http://tex.stackexchange.com/questions/7278/reasons-to-use-plain-tex

Como dizem no fórum, a curva de aprendizado do TeX é maior, mas uma vez 
percorrida traz um controle maior no uso dos recursos da linguagem. É o que 
também defende Petr Olsak, com seu conjunto de macros escritas para TeX. Ele 
afirma que com um conjunto simples e eficiente de macros (como o que ele 
desenvolveu, chamado de OPmac) fica muito simples fazer alterações 
diretamente no código dessas macros, para se alcançar o resultado desejado. 
Por outro lado, o LaTeX possui muitos pacotes com dezenas de milhares de linhas 
de código para resolver problemas semelhantes: 
http://math.feld.cvut.cz/ftp/olsak/bulletin/tb106olsak-opmac.pdf

Dessa forma, as linhas de código a que me referi são dos pacotes do LaTeX, e 
não do documento do usuário. O usuário acessa os pacotes através de 
\usepackage e de passagem de parâmetros. Porém, se ao invés de passagem de 
parâmetros para um pacote, tivermos uma macro com um código simples e 
eficiente para determinada tarefa, a alteração diretamente no código dá um 
controle muito maior na saída desejada. Essa que é a ideia.

No sentido prático, precisamos apenas de: 
- um conjunto de macros como o OPmac (que traz criação automática de 
sumário, formatação de margens, etc.)
- tabela de hifenização em português, como esta: 
http://dante.ctan.org/tex-archive/language/portuguese/pt8hyph.tex
- uma macro para definição de fontes, como a fontch.tex (que também é bem 
simples)

Então, as questões de codificação, sumário, lista de figuras e de tabelas, 
captions, etc., já estão resolvidas, inclusive da acentuação (não utilizo 
os acentos como comandos, o fontch.tex resolve o problema). É que no exemplo 
que enviei quis simplificar ao máximo o documento para enfatizar apenas os 
estilos bibliográficos.

Sem sombra de dúvida, para o usuário iniciante o LaTeX é a melhor opção. 
Pode-se ver resultados mais rápidos. Mas conforme temos necessidade de 
modificar ou personalizar mais os resultados, o TeX dá um controle maior, por 
termos contato com um nível mais baixo da linguagem. Tenho utilizado tanto um 
como o outro.

O desafio proposto é uma versão de estilo bibliográfico abnTeX compatível 
com o plain TeX. Talvez ao final colocá-lo disponível numa pasta do projeto 
juntamente com o abntex2, para usuários mais avançados ou os que queiram se 
aventurar utilizando o estilo no TeX original.

===================

Com relação às medidas exatas de \vskip e \hskip no LaTeX:

Compilei o código postado, e imprimi com o adobe Acrobat, sem ajuste de escala 
(ou seja, tamanho original), papel A4 numa impressora a laser hp. Também 
imprimi como Bitmap usando o programa PDFill. Resultado da medição com a 
régua e da medição com ferramenta do Photoshop: 

- De uma linha-base a outra: 2,43cm; 
- Espaço em branco entre duas linhas: 2,18cm;
- Distância entre os I's com o \hskip: 2,13cm.

Estou usando o MikTeX versão 2.8 (configurado para papel A4) no windows XP. 
Compilando com o pdflatex. No Debian wheezy com o TexLive tenho resultado 
semelhante. Coloquei o .pdf gerado no winXP em anexo. Alguma sugestão?

Original comment by lrsilve...@gmail.com on 15 Apr 2014 at 9:31

Attachments:

GoogleCodeExporter commented 9 years ago
Caro  lrsilveira

Obrigado pela sugestão de correção do documento abntex2cite.tex. Já o 
corrigi! Se perceber algo mais, por favor, avise-nos.

Quanto à ideia de tornar o abntex2cite compatível com o TeX, acho ótima a 
ideia! Atualmente temos modelos e macros para LyX 
(https://code.google.com/p/abntex2/wiki/LyX), por exemplo. Então, acredito que 
seria muito interessante termos para TeX!

Você topa ser o responsável por essa linha de trabalho? Se topar, adicione 
você à lista de pessoas que contribuem ao projeto e controlamos as atividades 
pelas issues. Daí criamos páginas na Wiki para explicar o uso e podemos até 
criar um modelo de documento inteiro em TeX puro. É claro que eu e quem mais 
tiver interessado vamos lhe ajudando.

Topas? Abraços!

Original comment by laurocesar on 15 Apr 2014 at 9:43

GoogleCodeExporter commented 9 years ago
Caro lrsilveira, o código Latex abaixo gera espaços de 2 cm entre as 
linhas-base. 

\documentclass{article}
\pagestyle{empty}

\begin{document}

Uma linha.

\vskip 2cm
Uma linha utilizando vspace abaixo (deve haver espaço/parágrafo):

\vspace{2cm}

\end{document}

===

A explicação para a diferença é que o \vskip não equivale a um espaço 
entre as linhas-base: ele simplesmente adiciona um espaço a outros espaços 
que o TeX possa ter adicionado. A diferença entre as medições pode ser 
resultado de \baselineskip + \parskip -- mas em todo caso, um espaço de 2 cm 
será igual em TeX e LaTeX.

Eu acho interessante a ideia de utilizar plain TeX e criar um estilo Bibtex 
para isso, mas somente como exercício. Até hoje eu não encontrei nada que 
precisasse que não pudesse ser feito em Latex -- se você tiver algum exemplo, 
seria muito bem-vindo.

Original comment by yche...@gmail.com on 16 Apr 2014 at 12:55

GoogleCodeExporter commented 9 years ago
Caro Lauro César:

Acho interessante a ideia sim. Contudo, estou com pouquíssimo tempo devido às 
atividades do doutorado, e o andamento das coisas pode ser lento. Mas vou 
entrar na lista e vamos trocando ideias. Veremos o que conseguimos fazer.

Lembrando que o LyX é apenas um editor de texto, e o modelo para LyX continua, 
em sua essência, em LaTeX. No caso o TeX é um outro compilador, e será 
preciso mudanças mais profundas no modelo para ficar 100% compatível.

A ideia de criar um documento todo em plain TeX também é interessante, e 
diria que é até mais fácil do que criar um estilo bibliográfico, pois já 
tem bastante coisa pronta disponível.

Abraço!

Original comment by lrsilve...@gmail.com on 17 Apr 2014 at 6:17

GoogleCodeExporter commented 9 years ago
Prezado ycherem,

Tens razão, as variáveis \baselineskip + \parskip afetam o valor de \vskip ou 
\vspace, tanto em documentos em TeX puro quanto em LaTeX; percebi isso nos 
testes que fiz aqui. Alterando \baselineskip e \parskip para zero no LaTeX, 
obtenho \vspace ou \vskip com dimensões exatas. Obrigado pela dica!

Ainda tenho algumas dúvidas...

- Há uma forma de definir margens de páginas com medidas exatas no LaTeX, 
usando algo como \hsize, \vsize, \hoffset e \voffset? No LaTeX só consigo 
medidas exatas de margem com o pacote "geometry", aquelas variáveis não 
trabalham muito bem, as medidas não saem exatas. Já no plain TeX, essas 4 
variáveis me dão um resultado perfeito.

- Se estou editando um livro no LaTeX, como faço para definir um cabeçalho, 
frente e verso, com o nome do capítulo nas páginas pares, e nome da seção 
nas ímpares? No TeX eu consegui com alguma programação, mas no LaTeX não 
tenho ideia.

====================

A ideia de utilizar plain TeX e criar um estilo abnt do bibtex como exercício 
é interessante também. Não faz muito tempo que comecei a mexer com o TeX e 
sua linguagem, porém, achei mais fácil compreender os códigos em TeX do que 
os códigos dos pacotes LaTeX. Em essência, nos pacotes do LaTeX tem código 
TeX, mas também há bastante coisa específica de LaTeX e, nesse caso, não 
compreendo bem. Precisarei de ajuda para entender o que faz cada parte do 
código do abncite.sty...

Outra questão interessante é a diferença na quantidade de linhas de código 
entre uma macro em TeX e um pacote do LaTeX. Tomemos como exemplo a macro 
"margins" do conjunto OPmac para TeX, que permite definição automática de 
margens nas páginas do documento. Essa macro contém apenas 57 linhas de 
código. Já o pacote "geometry" do LaTeX tem por volta de 1000 linhas de 
código para fazer exatamente a mesma coisa... Alguma explicação?

Original comment by lrsilve...@gmail.com on 17 Apr 2014 at 7:34

GoogleCodeExporter commented 9 years ago

Original comment by laurocesar on 22 Apr 2014 at 11:39