summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/FAQ-en/faq-projects.tex
blob: e7a616ace80e82c752e4a014275332504af0abdc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
% $Id: faq-projects.tex,v 1.29 2014/01/28 18:17:36 rf10 Exp rf10 $

\section{Current \TeX{}-related projects}

\Question[Q-LaTeX3]{The \LaTeX{} project}

The \LaTeX{} project team (see \URL{http://www.latex-project.org/latex3.html})
is a small group of volunteers whose aim is
to produce a major new document processing system based on the
principles pioneered by Leslie Lamport in the current \LaTeX{}.  The
new system is (provisionally) called \LaTeX{}3; it
will remain freely available and it will be fully documented at
all levels.

The \LaTeX{} team's first product (\LaTeXe{}) was delivered in 1994
(it's now properly called ``\LaTeX{}'', since no other version is current).

\LaTeXe{} was intended as a consolidation exercise, unifying several
sub-variants of \LaTeX{} while changing nothing whose change wasn't
absolutely necessary.  This has permitted the team to support a single
version of \LaTeX{}, in parallel with development of \LaTeX{}3.

Some of the older discussion papers about directions for \LaTeX{}3 are
to be found on \acro{CTAN}; other (published) articles are to be found
on the project web site (\URL{http://www.latex-project.org/papers/}).

Some of the project's experimental code is visible on the net:
\begin{itemize}
\item via \URL{http://www.latex-project.org/code.html}, which points
  to the project's \acro{SVN} repository;
\item via the project's
  \href{https://github.com/latex3/svn-mirror}{\emph{GitHub} mirror};
\item from \acro{CTAN}: snapshots of two major collections from the
  code, \Package{l3kernel} (supporting \LaTeX{}3 coding conventions in
  a \LaTeXe{} environment), \Package{l3packages} (a first cut of a
  ``document designer's interface'') as well as
  \Package{l3experimental} (new stuff that's still under
  development).
\end{itemize}
The packages \Package{l3kernel} and \Package{l3packages} provide an
``experimental harness'' that may be used as a testbed for \latex{}3
work.

Note that \Package{l3kernel} introduces a coding structure quite
different from earlier \latex{} code; a few hardy authors, who are not
members of the project, are nevertheless using it in their development
work.

Anyone may participate in discussions of the future of \LaTeX{}
through the mailing list \texttt{latex-l}; some development work
(outside the project) is discussed on the list.  Subscribe to the list
by sending a message `\texttt{subscribe latex-l <\emph{your name}>}'
to  \mailto{listserv@urz.Uni-Heidelberg.de}
\begin{ctanrefs}
\item[l3experimental \nothtml{\rmfamily}bundle]\CTANref{l3experimental}
\item[l3kernel \nothtml{\rmfamily}bundle]\CTANref{l3kernel}
\item[\nothtml{\rmfamily}\LaTeX{} project publications]\CTANref{ltx3pub}
\item[l3packages \nothtml{\rmfamily}bundle]\CTANref{l3packages}
\end{ctanrefs}
\LastEdit{2012-02-07}

\Question[Q-mathml]{Future \acro{WWW} technologies and \AllTeX{}}

An earlier answer % ! line break
(\Qref[number]{``converting to \acro{HTML}''}{Q-LaTeX2HTML})
addresses the issue of converting existing \AllTeX{} documents for
viewing on the Web as \acro{HTML}.  All the present techniques are
somewhat flawed: the answer explains why.

However, things are changing, with
better font availability, cunning \acro{HTML} programming and the
support for new Web standards.
\begin{description}
\item[Font technologies] Direct representation of mathematics in
  browsers has been hampered up to now by the limited range of symbols
  in the fonts whose availability designers can count on.  Some existing
  \AllTeX{} to \acro{HTML} converters provide maths symbols by
  hitching them to alternate font face specifications for standard
  code points in a non-standard way.  This does nothing for the
  universality of the \acro{HTML} so generated.

  Now, however, free Unicode-encoded OpenType fonts, with coverage of
  mathematical symbols, are starting to appear.  The much-heralded
  \href{http://www.stixfonts.org/}{\FontName{STIX} fonts} are now
  available on \acro{CTAN}, and a tweaked version
  (\FontName{XITS}) and \FontName{Asana Math} are also
  available.  The \acro{STIX} project has still not released macros
  for using the fonts, but the \Package{unicode-math} package will do
  what is necessary under \xetex{} and \luatex{}, and the fonts can of
  course be used in browsers.
%%   In the near future, we can expect rather wide availability of
%%   Unicode fonts with good coverage of symbols, which should make life
%%   easier for those who need to represent mathematics.
\item[\acro{XML}] The core of the range of new standards is
  \acro{XML}, which provides a framework for better structured markup;
  limited support for it has already appeared in some browsers.

  Conversion of \AllTeX{} source to \acro{XML} is already available
  (through \TeX{}4ht at least), and work continues in that arena.  The
  alternative, authoring in \acro{XML} (thus producing documents that
  are immediately Web-friendly, if not ready) and using \AllTeX{} to
  typeset is also well advanced.  One useful technique is
  \Qref*{\emph{transforming} the \acro{XML} to \LaTeX{}}{Q-SGML2TeX},
  using an \acro{XSLT} stylesheet or code for an \acro{XML} library,
  and then simply using \LaTeX{}; alternatively, one may
  \Qref*{typeset direct from the \acro{XML} source}{Q-readML}.
\item[Direct representation of mathematics]
  Math\acro{ML} is a standard for representing maths on the Web; its
  original version was distinctly limited, but version 2 of Math\acro{ML}
  has had major browser support since 2002 with richness of mathematical
  content for online purposes approaching that of \TeX{} for print.
  Browser support for Math\acro{ML} is provided by \ProgName{amaya}, the
  `Open Source' browser \ProgName{mozilla} (and its derivatives
  including \ProgName{NetScape}, \ProgName{Firefox} and \ProgName{Galeon}) and
  \ProgName{Internet Explorer} when equipped with a suitable plug-in
  such as \ProgName{MathPlayer}.
  There's evidence that \AllTeX{} users are starting to use such
  browsers.  Some believe that \acro{XHTML}+Math\acro{ML} now provides
  better online viewing than \acro{PDF}.
  Work to produce \acro{XHTML}+Math\acro{ML} is well advanced in both the
  \TeX{}4ht and \ProgName{TtH} projects for \AllTeX{} conversion.
%%   Such conversion, however, has limits of soundness unless one
%%   is very much aware of the needs of one's conversion program
%%   and adapts one's usage of \AllTeX{} accordingly.

  The \href{http://www.mathjax.org}{\ProgName{MathJax}} engine will process the
  content of \latex{} \csx{[} \dots{}~\csx{]} and \csx{(} \dots{}~\csx{)}
  `environments' in an \acro{HTML} document, to produce mathematical
  output that may (for example) be cut-and-pasted into other programs.

  Incorporation into your document can be
\begin{wideversion}
  as simple as incorporating:
\begin{verbatim}
<script type="text/javascript"
  src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
\end{verbatim}
  into the header of your \acro{HTML} document,
\end{wideversion}
\begin{narrowversion}
  incorporating the script~---
  \url{http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML}
  ---~as the \texttt{src} tab of a \texttt{script type="text/javascript"}
  element in the header of your \acro{HTML} document,
\end{narrowversion}
  though the \href{http://www.mathjax.org/}{MathJax project's site}
  also allows you to download your own copy and install it on one of
  \emph{your} servers.  \ProgName{MathJax} is open source software, so
  you could, in principle, extend it to do even more eccentric tasks.

  An approach different from \AllTeX{} conversion is taken by
  the \href{http://www.albany.edu/~hammond/gellmu/}{\emph{GELLMU} Project}.
  Its \emph{article} \acro{XML} document type, which has a markup vocabulary
  close to \LaTeX{} that can be edited using \LaTeX{}-like markup
  (even though it is not \LaTeX{}~--- so far), comes with translators
  that make both \acro{PDF} (via \emph{pdflatex}) and
  \acro{XHTML}+Math\acro{ML}.  Such an approach avoids the inherent
  limitations of the ``traditional'' \AllTeX{} translation processes,
  which have traps that can be sprung by unfettered use of \AllTeX{}
  markup.
\item[Graphics] 
  \acro{SVG} is a standard for graphics representation on the web.
  While the natural use is for converting existing figures,
  representations of formulas are also possible, in place of the separate
  bitmaps that have been used in the past (and while we wait for the
  wider deployment of Math\acro{ML}).
  
  Browser plug-ins, that deal with \acro{SVG} are already available
  (Adobe offer one, for example).  More recently, the open source
  graphics editor \href{http://www.inkscape.org/}{\ProgName{Inkscape}}
  has appeared, and has been reported to be useful for
  \acro{SVG}-related work in at least one \TeX{}-related project.  Be
  aware that the developers of \ProgName{Inkscape} have no illusions
  about being able to replace commercial software, yet\dots{}
\item[Direct use of \TeX{} markup]
  Some time back, \acro{IBM} developed a browser plug-in called
  TechExplorer, which would display \AllTeX{} documents direct in a
  browser.  Over the years, it developed into a Math\acro{ML} browser
  plug-in, while still retaining its \AllTeX{} abilities, but it's now
  distributed (free for Linux and Windows platforms) by
  \href{http://www.integretechpub.com/}{Integre Technical Publishing}.

  The disadvantage of the TechExplorer approach is that it places the
  onus on the browser user; and however technically proficient
  \emph{you} are, it's never safe to assume too much of your readers.
  An interesting alternative is
  \href{http://www.forkosh.com/mathtex.html}{Math\TeX{}}, which sits
  on your server as a \acro{CGI} script, and you use it to include
  your \TeX{}, in your \acro{HTML}, as if it were an image:
\begin{quote}
\begin{wideversion}
\begin{verbatim}
<img src="/cgi-bin/mathtex.cgi?f(x)=\int\limits_{-\infty}^xe^{-t^2}dt">
\end{verbatim}
\end{wideversion}
\begin{narrowversion}
\begin{verbatim}
<img src="/cgi-bin/mathtex.cgi?f(x)=
   \int\limits_{-\infty}^xe^{-t^2}dt">
\end{verbatim}
\end{narrowversion}
\end{quote}
(\Package{Mathtex} supersedes the author's earlier \Package{mimetex}.)
\end{description}
\begin{ctanrefs}
\item[\nothtml{\rmfamily}Asana Math fonts]\CTANref{asana-math}
\item[GELLMU]\CTANref{gellmu}
\item[MathTeX]\CTANref{MathTeX}
\item[MimeTeX]\CTANref{MimeTeX}
\item[\nothtml{\rmfamily}STIX fonts]\CTANref{stix}
\item[tex4ht]\CTANref{tex4ht} (but see \url{http://tug.org/tex4ht/})
\item[unicode-math.sty]\CTANref{unicode-math}
\item[\nothtml{\rmfamily}XITS fonts]\CTANref{xits}
\end{ctanrefs}
\LastEdit{2011-10-17}

\Question[Q-textrace]{Making outline fonts from \MF{}}

\ProgName{TeXtrace}, originally developed by  P\'eter Szab\'o, is a
bundle of Unix scripts that use  Martin Weber's freeware boundary
tracing package
\href{http://autotrace.sourceforge.net}{\ProgName{autotrace}} to 
generate Type~1 outline fonts from \MF{} bitmap 
font outputs.  The result is unlikely ever to be of the quality of
the commercially-produced Type~1 font, but there's always the
\href{http://fontforge.sourceforge.net/}{\ProgName{FontForge}} font
editor to tidy things.  Whatever, there
remain fonts which many people find useful and which fail to attract
the paid experts, and auto-tracing is providing a useful service here.
Notable sets of
fonts generated using \ProgName{TeXtrace} are P\'eter Szab\'o's own
\acro{EC}/\acro{TC} font set \FontName{tt2001} and Vladimir Volovich's
\acro{CM}-Super set, which covers the \acro{EC}, \acro{TC}, and the
Cyrillic \acro{LH} font sets (for details of both of which sets, see
\Qref[answer]{``8-bit'' type 1 fonts}{Q-type1T1}).

Another system, which arrived slightly later, is 
\href{http://www.cs.uu.nl/~hanwen/mftrace/}{\ProgName{mftrace}}:
this is a small \ProgName{Python} program that does the same job.
\ProgName{Mftrace} may use either \ProgName{autotrace} (like
\ProgName{TeXtrace}) or Peter Selinger's
\href{http://potrace.sourceforge.net}{\ProgName{potrace}} to produce
the initial outlines to process.  \ProgName{Mftrace} is said to be
more flexible, and easier to use, than is \ProgName{TeXtrace}, but both systems
are increasingly being used to provide Type~1 fonts to the public domain.

The \ProgName{MetaType1} system aims to use \MF{} font sources, by way
of \MP{} and a bunch of scripts and so on, to produce high-quality
Type~1 fonts.  The first results, the % ! line break
\Qref*{\Package{Latin Modern} fonts}{Q-type1T1}, are now
well-established, and a bunch of existing designs have been reworked
in MetaType1 format.

\Package{Mf2pt1} is another translator of \MF{} font sources by way of
\MP{}; in addition,
available, \Package{mf2pt1} will use
\href{http://fontforge.sourceforge.net/}{\ProgName{fontforge}} (if it's
available) to auto-hint the result of its conversion.
(\Package{Mf2pt1} is also written in \ProgName{perl}.)
\begin{ctanrefs}
\item[MetaType1]\CTANref{metatype1}
\item[mf2pt1]\CTANref{mf2pt1}
\end{ctanrefs}

\Question[Q-WYGexpts]{The \TeX{} document preparation environment}

``\Qref*{Why \TeX{} is not \WYSIWYG{}}{Q-notWYSIWYG}''
outlines the reasons (or excuses) for the huge disparity of user
interface between ``typical'' \TeX{} environments and commercial word
processors.

Nowadays, at last, there is a range of tools available that try either
to bridge or to close the gap.  One range modestly focuses on
providing the user with a legible source document.  At the other
extreme we have \href{http://www.texmacs.org}{\ProgName{TeXmacs}},
a~document processor using
\TeX{}'s algorithms and fonts for both editor display and printing.
\ProgName{TeXmacs} does not use the \TeX{}
language itself (though among other formats, \LaTeX{} may be exported
and imported).  A bit closer to \LaTeX{} is
\href{http://www.lyx.org/}{LyX}, which has its own
editor display and file formats as well, but does its print output by
exporting to \LaTeX{}.  The editor display merely resembles the
printed output, but you have the possibility of entering arbitrary
\LaTeX{} code.  If you use constructs that LyX does not
understand, it will just display them as source text marked red, but
will properly export them.

Since a lot of work is needed to create an editor from scratch that
actually is good at editing (as well as catering for \TeX{}), it is
perhaps no accident that several approaches have been implemented
using the extensible \ProgName{emacs} editor.  The low end of the
prettifying range is occupied by syntax highlighting: marking \TeX{}
tokens, comments and other stuff with special colours.
Many free editors (including \ProgName{emacs}) can cater for \TeX{} in
this way.  Under Windows, one of the more popular editors with such
support is the
Shareware product \href{http://www.winedt.com/}{\ProgName{winedt}}.
Continuing the range of
tools prettifying your input, we have the \ProgName{emacs} package
\href{http://x-symbol.sourceforge.net}{\Package{x-symbol}}, which does
the \WYSIWYG{} part of its work by replacing single \TeX{} tokens and
accented letter sequences with appropriate-looking characters on the
screen.

A different type of tool focuses on making update and access to
previews of the typeset document more immediate.  A recent addition
in several viewers, editors and \TeX{} executables are so-called
`source specials' for cross-navigation.  When \TeX{} compiles a
document, it will upon request insert special markers for every input
line into the typeset output.  The markers are interpreted by the \acro{DVI}
previewer which can be made to let its display track the page
corresponding to the editor input position, or to let the editor jump
to a source line corresponding to a click in the preview window.

An \ProgName{emacs} package that combines this sort of editor movement
tracking with automatic fast recompilations (through the use of dumped
formats) is
\href{http://pauillac.inria.fr/whizzytex/}{\Package{WhizzyTeX}}
 which is best used with a previewer by the
same author.

Another \ProgName{emacs} package called
\href{http://preview-latex.sourceforge.net}{\Package{preview-latex}}
tries to solve
the problem of visual correlation between source and previews in a
more direct way: it uses a \LaTeX{} package to chop the document source
into interesting fragments (like figures, text or display math) which
it runs through \LaTeX{} and replaces the source text of those
fragments with the corresponding rendered output images.  Since it
does not know about the structure of the images, at the actual cursor
position the source text is displayed while editing rather than the
preview.  This approach is more or less a hybrid of the source
prettifying and fast preview approaches since it works in the source
buffer but uses actual previews rendered by \LaTeX{}.

A more ambitious contender is called \TeX{}lite.  This
system is only available on request from its author;
it continuously updates its screen with the help of a special version
of \TeX{} dumping its state in a compressed format at each page and
using hooks into \TeX{}'s line breaking mechanism for reformatting
paragraphs on the fly.  That way, it can render the output from the
edited \TeX{} code with interactive speed on-screen, and it offers the
possibility of editing directly in the preview window.

That many of these systems occupy slightly different niches can be
seen by comparing the range of the
\ProgName{emacs}-based solutions ranging from syntax highlighting to instant
previewing: all of them can be activated at the same time without
actually interfering in their respective tasks.

The different approaches offer various choices differing in the
immediacy of their response, the screen area they work on (source or
separate window), degree of correspondence of the display to the final
output, and the balance they strike between visual aid and visual
distraction.
\begin{ctanrefs}
\item[preview-latex]Distributed as part of \CTANref{auctex}[preview-latex]
\item[texmacs]Browse \CTANref{texmacs}
\end{ctanrefs}

\Question[Q-omegaleph]{Omega and Aleph}

Omega\nothtml{ (\ensuremath{\Omega})} was developed as an extension of
\TeX{}, to use with multilingual texts, expressed in a variety of
input encodings.  Omega uses 16-bit, Unicode-encoded, characters.  It
provides many innovative concepts, notably including the ``translation
process'' that takes a character stream and transforms it according to
various processes that may be internally specified, or be a separate
program.

While Omega showed a lot of promise at its mid-1990s announcement,
progress was slow, and development was essentially dead by the time
that one of the original developers withdrew (taking with him a bunch
of research students).

Before that distressing event, a separate thread of development had
started, to produce a program % !avoid space between Aleph and comma
called Aleph\nothtml{ (\ensuremath{\aleph})}, which merged the facilities of
\Qref*{\eTeX{}}{Q-etex} into a stable Omega codebase and added other
extensions.  Aleph also proved an attractive platform for many people;
but its development, too, has dried up.

A presentation at Euro\TeX{} 2006 claimed that development of Omega
was picking up again, in parallel with research into what the (new)
developers consider a rational scheme for supporting \TeX{}-style
typesetting.  The new system was to be known as Omega-2
(\latexhtml{\ensuremath{\Omega_2}}{Omega subscript 2}), and was to be
designed in a modular fashion so that support of new facilities (such
as use of advanced OpenType fonts) could be added in a relatively
straightforward fashion.  A quick web search leads to a recommendation
that potential users consider \Qref*{\luatex{}}{Q-luatex} instead;
fortunately, lessons learned in Aleph project have been carried
forward in the development of \luatex{}.

\Question[Q-xetex]{\xetex{}}

\href{http://scripts.sil.org/xetex}{\xetex{}}, by Jonathan Kew, is a
successor to the shareware TeX/GX program for Macintoshes.  It was
developed as a \acro{WEB} `change file' applied to the original source
of \tex{}; the main changes include:
\begin{description}
\item[The input stage] \xetex{} by default reads Unicode (UTF-8, for
  instance), although it's also capable of interpreting differently
  encoded files (for backwards compatibility).  Multibyte characters
  are reduced to a single internal character upon reading, so they are
  considered as a unique entity when tokenization is performed.  (So,
  for example, you can have command names in cyrillic, if you must,
  but such a practice is not recommended.)
\item[The font management] a substantial revision has added support
  for OpenType and TrueType fonts, delegating some parts to
  third-party libraries.
\item[The maths font set up] \xetex{} introduces new primitives for
  extending the \csx{mathcode} and \csx{mathchardef} commands in TeX,
  allowing the user to specify characters in the whole Unicode set and
  in 256 `math families' (\tex{} only has 16, which limits some maths
  coding techniques).
\item[``Post-processing'' features (A)] \xetex{} links to the
  \ProgName{teckit} library so it can apply a \extension{map} file
  that allows transformation of characters in already formed token
  lists, before they are processed in the ``stomach'' for typesetting.
  In this way, a declaration ``\texttt{Ligatures=TeX}'' is provided,
  which attaches a map directive to the font that transforms the
  character combinations (familiar to \tex{} users) into a single
  character; for instance \texttt{-{}-{}-} is transformed into
  ``\textemdash''.
\item[``Post-processing'' features (B)] Characters can be assigned to
  an ``interchar token class'' and it is possible to specify tokens to
  be added when there is a transition from one class to another.  The
  packages \Package{polyglossia}, \Package{xeCJK} and
  \Package{ucharclasses} exploit this feature.
\end{description}
Otherwise, the process of typesetting is essentially the same as
\tex{}'s.  (However some changes have also been made in the
hyphenation stage that may give slightly different results if the same
document is compiled with \pdftex{} or \xetex{}.)
\begin{ctanrefs}
\item[polyglossia.sty]\CTANref{polyglossia}
\item[xeCJK.sty]\CTANref{xecjk}
\item[ucharclasses.sty]\CTANref{ucharclasses}
\end{ctanrefs}
\LastEdit{2013-02-21}


\Question[Q-luatex]{\PDFTeX{} and \LuaTeX{}}

Elsewhere in these \acro{FAQ}s, we learn that development of
\Qref*{\PDFTeX{}}{Q-whatpdftex} is ``in essence'' complete~--- no new
facilities are being developed at the time of writing.  The \PDFTeX{}
team has announced that they have frozen \PDFTeX{}'s specification in
its current state (version 1.40.11), and that nothing but bug
corrections will be provided up to the time of the final release,
\PDFTeX{} 1.50.0.  (The interpretation of the statement seems to allow
sensible changes that are beyond any reasonable definition of
\emph{bug}\dots{})

As \PDFTeX{} development ran down,
development of a new system, \LuaTeX{} was started.
\href{http://www.lua.org/}{\ProgName{Lua}} is a interpreter designed
to be incorporated into other applications.  \LuaTeX{} consists of a
\TeX{}-like engine with a \ProgName{lua} interpreter `embedded' in it;
the \ProgName{lua} interpreter has access to many of the data
structures used for typesetting, so that the programmer may also
interpolate chunks of \ProgName{lua} code into their \AllTeX{} macros,
or as `call-backs' for use when the \TeX{}-like engine does certain
operations.

This arrangement offers the prospect of a ``semi-soft'' typesetting
engine: it will have its basic behaviour, but the user gets to
redefine functionality if an idea occurs~--- there will be no need to
persuade the world first, and then find a willing developer to work on
the sources of of the distribution.

The \href{http://www.luatex.org/}{\LuaTeX{} project} is (with monetary
support from various sources) pursuing avenues that many of the other
current projects have in their sights, notably Unicode character
representations and support for OpenType fonts.  The intention is
to integrate the extensions pioneered by \Qref*{Aleph}{Q-omegaleph}.
Users may also care to view the % ! line break
\href{http://www.luatex.org/documentation.html}{\luatex{} documentation page}
or the \href{http://wiki.luatex.org}{\luatex{} \acro{WIKI}}

\texlive{} (2013) holds version 0.76.0 of \luatex{}.  This version
demonstrates the ``final functionality'', though the project
remains a \ensuremath{\beta}-release.  Functional stability was first
declared for version 0.50.0, released near the end of December 2009.

\CONTeXT{} `Mark 4' can already make use of \LuaTeX{}; much of its
code already appears in two forms~--- a \TeX{}-based version
(\extension{mkii}) and a `\extension{mkiv}' version (new functionality
typically \emph{only} appears in `\extension{mkiv}' form), which uses
\luatex{} extensions (including \ProgName{lua} scripting).  \LaTeX{}
packages that support its use are appearing (some of them providing
re-implementations of existing \context{} code).

\latex{} running over \luatex{} (commonly known as Lua\latex{}) is not
an ``official'' entity (yet), but useful packages are
appearing (i.e., the \ctan{} path \path{macros/luatex/latex} holds
several items).
\begin{ctanrefs}
\item[\nothtml{\rmfamily}\luatex{} snapshot]\CTANref{luatex}
\item[\nothtml{\rmfamily}\pdftex{} distribution]\CTANref{pdftex}
\end{ctanrefs}
\LastEdit{2013-05-21}

\Question[Q-ant]{The \textsf{ANT} typesetting system}

Achim Blumensath's \href{http://ant.berlios.de}{\textsf{ANT}} project
aims not to replicate \TeX{} with a different implementation
technique, but rather to provide a replacement for \TeX{} which uses
\TeX{}-like typesetting algorithms in a very different programming
environment.  \textsf{ANT} remains under development, but it is now
approaching the status of a usable typesetting system.

\textsf{ANT}'s markup language is immediately recognisable to the
\AllTeX{} user, but the scheme of implementing design in
\textsf{ANT}'s own implementation language (presently
\ProgName{OCaml}) comes as a pleasant surprise to the jaded \acro{FAQ}
writer.  This architecture holds the promise of a system that avoids a
set of serious problems with \TeX{}'s user interface: those that
derive from the design language being the same as the markup language.
\begin{ctanrefs}
\item[\textsf{ANT}]\CTANref{ant}
\end{ctanrefs}

\Question[Q-extex]{The \ExTeX{} project}

\href{http://www.extex.org/}{The \ExTeX{} project} is
building on the experience of the many existing \TeX{} development and
extension projects, to develop a new \TeX{}-like system.  The system
is to be developed in Java (like the ill-fated \NTS{} project).

While \ExTeX{} will implement all of \TeX{}'s primitives, some may be
marked as obsolete, and ``modern'' alternatives provided (an obvious
example is the primitive \csx{input} command, whose syntax inevitably
makes life difficult for users of modern operating system file
paths).  Desirable extensions from \Qref*{\eTeX{}}{Q-etex},
\Qref*{\PDFTeX{}}{Q-whatpdftex} and \Qref*{\ensuremath{\Omega}}{Q-omegaleph}
have been identified.

Usability will be another focus of the work: debugging support and log
filtering mechanisms will please those who have long struggled with
\TeX{} macros.

\ExTeX{} will accept Unicode input, from the start.  In the longer
term, drawing primitives are to be considered.

\Question[Q-biblatex]{Replacing the \BibTeX{}--\LaTeX{} mechanism}

Producing a successor to \BibTeX{} has long been a favoured activity
among a certain class of \TeX{}-users; the author has seen reports of
progress (on several projects), over the years, but few that claim to
be ready for ``real-world'' use.

Few would deny that \BibTeX{} is ripe for renewal: as originally
conceived, it was a program for creating bibliographies for technical
documents, in English.  People have contributed mechanisms for a
degree of multilingual use (whose techniques are arcane, and quite
likely inextensible), while an extension (\ProgName{bibtex8}) allows
use with 8-bit character codes, thus providing some multilingual
capabilities.  In addition, specialist \BibTeX{} style files are
available for use in non-technical papers.

\BibTeX{} uses a style language whose mechanisms are unfamiliar to
most current programmers: it's difficult to learn, but since there are
few opportunities to write the language, it's also difficult to become
fluent (in the way that so many people fluently write the equally
arcane \TeX{} macro language).

Oren Patashnik (the author of \BibTeX{}) summarises the issues as he
sees them, in a % !line break
\href{http://tug.org/TUGboat/Articles/tb24-1/patashnik.pdf}{\acro{TUG} conference paper from 2003}
that seems to suggest that we might expect a
\BibTeX{}~1.0 \dots{} which hasn't (yet) appeared.

In the absence of \BibTeX{}~1.0, what do we need from the bibliography
system of the future?~--- simple: a superset of what \BibTeX{} does
(or can be made to do), preferably implementing a simpler style
language, and with coherent multilingual capabilities.

There are two parts to a bibliography system; processing the database
of citations, and typesetting the results.  The existing \bibtex{}
system provides a means of processing the database, and there are
macros built into \latex{}, as well as many \latex{} packages, that
process the results.

Of the direct \BibTeX{} replacements, only two have been submitted to
\acro{CTAN}: Cross\TeX{} and \ProgName{biber}.

Cross\TeX{}'s language feels familiar to the existing user of
\BibTeX{}, but it's redesigned in an object-oriented style, and looks
(to a non-user) as if it may well be adequately flexible.  It is said
to operate as a \bibtex{} replacement.

Cross\TeX{}'s team respond to queries, and seem well aware of the
need for multilingual support, though it isn't currently offered.

\ProgName{Biber} is intimately associated with the \latex{} package
\Package{biblatex}; it is logically a \bibtex{} replacement, but is also
capable of using bibliography databases in its own
\ProgName{biblatexml} (\acro{XML}-based) format.  \Package{Biblatex}
can also use \bibtex{}, but \ProgName{biber} opens up a far wider
range of possibilities, including full Unicode support.

\Package{Biblatex} is a processor for the output of an application
such as \ProgName{biber} or \bibtex{}; the style of citations and of
the bibliography itself (in your document) is determined by the way
your \Package{biblatex} style has been set up, not on some
\bibtex{}-\latex{} package combination.  \Package{Biblatex}'s
structure thus eliminates the collections of \BibTeX{} styles, at a
stroke; it comes with a basic set of styles, and details are
determined by options, set at package loading time.  The author,
Philipp Lehman, evaluated the whole field of bibliography software
before starting, and as a result the package provides answers to
many of the questions asked in the bibliography sections of these
\acro{FAQ}s.

\Package{Biblatex} was released as experimental software, but it's
clear that many users are already using it happily; Lehman is
responsive to problem reports, at the moment, but a \emph{de facto}
set of expert users is already establishing itself.  A set of
contributed styles has appeared, which cover some of the trickier
bibliography styles.  The road map of the project shows that we are
now working on the final \emph{beta} releases before the ``stable''
\Package{biblatex}~1.0.

Finally, \Package{Amsrefs} uses a transformed \extension{bib} file,
which is expressed as \LaTeX{} macros.  (The package provides a
\BibTeX{} style that performs the transformation, so that a \LaTeX{}
source containing a \cmdinvoke{nocite}{*} command enables \BibTeX{} to
produce a usable \Package{amsrefs} bibliography database.)

\Package{Amsrefs} is maintained by the AMS as part of its author
support programme,
\begin{ctanrefs}
\item[amsrefs.sty]\CTANref{amsrefs}
\item[biber]\CTANref{biber}
\item[biblatex.sty]\CTANref{biblatex}
\item[bibtex8]\CTANref{bibtex8}
\item[\nothtml{\rmfamily}biblatex contributions]\CTANref{biblatex-contrib}
\item[\nothtml{\rmfamily}CrossTeX]\CTANref{crosstex}
\end{ctanrefs}