c# pdf to image github : Convert html form to pdf fillable form software SDK dll windows wpf winforms web forms tb102complete3-part867

TUGboat,Volume32(2011),No.3
271
Figure 5: Petersen graph output.
7.2 Dynamic input to Sage
The input to Sage can be determined at the time of
L
A
T
E
Xcompilation. For example, one can generate
output from Sage after collectinginput with\typein:
the author can insert functions to be plotted at the
time of compilation and plot the graphs. With this,
at each compilation one can generate different graphs.
This can be useful with online exam systems, since
we want to generate different figures or randomly
generated matrices in the exam paper.
As another example, one can have a collection of
examples one of which is inserted randomly; required
calculations and figure choice will be inserted on the
fly at compilation time.
Here is an example of how one can get input
and send it to Sage at the time of compilation:
\typein[\function]{Enter function name}
Here is the graph of $\function$:
\sageplot{plot(\function, -3,3)}
With the input ‘cos’, we get the expected:
8 Pregenerating results from Sage
For submission of a paper or book, it is not necessary
for Sage to be installed on the publisher’s systems.
The author should send the generated .sout file
along with the .tex file for publishing.
9 Installation of sagetex
The packagesagetex is available on
CTAN
[3], and
also from http://www.sagemath.org/. Install it
either in a texmf tree or in your working document
folder.
If Sage is properly installed on the system and
available then no additional settings are required.
More installation information can be found at [4].
Also, one can use Sage remotely from the Inter-
net while still using thesagetex package to compute
and insert outputs. More details about this can be
found at [5].
References
[1] http://www.sagemath.org/
[2] http://www.scilab.org/
[3] http://mirror.ctan.org/macros/latex/
contrib/sagetex
[4] www.sagemath.org/doc/installation/
sagetex.html
[5] http://www.sagenb.org/
⋄ Manjusha Joshi
Pune, India
manjusha dot joshi (at) gmail
dot com
Adream of computing and L
A
T
E
Xing together: A reality with SageT
E
X
Convert html form to pdf fillable form - C# PDF Form Data fill-in Library: auto fill-in PDF form data in C#.net, ASP.NET, MVC, WinForms, WPF
Online C# Tutorial to Automatically Fill in Field Data to PDF
converting a word document to pdf fillable form; create pdf fillable form
Convert html form to pdf fillable form - VB.NET PDF Form Data fill-in library: auto fill-in PDF form data in vb.net, ASP.NET, MVC, WinForms, WPF
VB.NET PDF Form Data fill-in library: auto fill-in PDF form data in vb.net, ASP.NET, MVC, WinForms, WPF
convert word doc to fillable pdf form; convert excel spreadsheet to fillable pdf form
272
TUGboat, Volume 32 (2011), No. 3
Multi-target publishing
Axel Kielhorn
1 One road leads to one target
The usual target format of my documents was paper:
ISO A
4,
ISO A
5or sometimes 3,5"× 5". My workflow
led to an intermediate
PDF
file which was fine for
reading on the screen, especially the smaller formats.
But then mobile devices appeared. The screen
was too smallto read
A
4or even
A
5documents. With
some effort it was possible to create a document that
was readable on one mobile device without excessive
scrolling.
Having a format that reflows according to the
size of the display with a user defined font size would
be desirable. Such a format is ePub. It is simply a
ZIP
archive with a predefined structure and a few
XML
files that contain the actual content. A
CSS
file
is used to control the appearance.
2 A detour
Luckily there is a program that reads L
A
T
E
X and
writes ePub: Pandoc [5] (licensed under the
GPL
).
Unless the L
A
T
E
Xfile is too complicated, Pandoc
will understand and convert it. But what is too
complicated? The easiest way to find out is to convert
afile from LAT
E
Xto LAT
E
Xand see what survives.
pandoc -r latex -t latex -o source-pd.tex
source.tex
2.1 A rough road
Pandoc uses
UTF
-8 encoded files. This shouldn’t be
problem for most English speakers since they usually
only usethefirst 127characters of that encoding. But
that is a naïve assumption. Even English speakers
need non-
ASCII
characters for foreign words and
punctuation characters. L
A
T
E
Xoffers many ways to
enter these characters, but the only way that doesn’t
cause problems is to write them as
UTF
-8 characters.
Thus\^o should be written asô and \o asø. A
small few lines of sed will help with the conversion.
3 Back to square minus one
Is LAT
E
Xreally the starting point? Or should we see
L
A
T
E
Xas one backend and the L
A
T
E
Xfile just as an
intermediate product?
4 An unusual direction:
Markdown instead of markup
Markdown is a markup language developed by John
Gruber [1] which looks as if no markup is present:
Editor’s note: First published in Die T
E
Xnische Komödie
3/2011, pp. 21-32; translation by the author.
AMarkdown-formatted document should be
publishable as-is, as plain text, without look-
ing like it’s been marked up with tags or for-
matting instructions.
The start of this article originally looked like
the following in Markdown:
# One road leads to one target
The usual target format of my documents was
paper: ISO A4, ISO A5 or sometimes 3,5"
$\times$ 5". My workflow led to an intermediate
file which was fine for reading on the screen,
especially the smaller formats.
But then mobile devices appeared. The screen
was too small to read A4 or even A5 documents.
With some effort it was possible to create a
document that was readable on *one* mobile
device without excessive scrolling.
This text was created from the original with:
pandoc -r latex -t markdown -o Ziele-tug.md
Ziele-tug.tex
Markdown is a very limited language. The man
page describing the language has only 16 pages. The
“Not SoShort Introduction toLAT
E
X2
ε
”has ten times
that number.
Converting from a complex language like LAT
E
X
to a simple language like Markdown is difficult. Thus
it is understandable that Pandoc only interprets a
tiny amount of L
A
T
E
Xmarkup. Since it doesn’t un-
derstand T
E
Xit uses regular expressions to parse the
file. This will require additional empty lines in some
cases where it is not required by T
E
X, otherwise the
parser misses sectioning commands or environments.
Therefore it is best to convert a document to
Markdown once and do all the future editing in
Markdown.
5 A new road to an old target: Generating
PDF
from Markdown via LAT
E
X
pandoc -r markdown -t latex -o source.tex
source.md
5.1 The default.latex file
Thedefault.latex file distributed with Pandoc (in,
e.g.,/usr/local/share/pandoc-X.Y/templates) is
aminimal example. With a little bit of LAT
E
Xknowl-
edge it can be customized to support the layout you
need. A version adapted for German users is included
in the supplementary material [2]. Modifications are
marked with-ak-. A more elaborate file using the
KOMA
-Script class is included as well.
Axel Kielhorn
C# PDF Field Edit Library: insert, delete, update pdf form field
A professional PDF form creator supports to create fillable PDF form in C#.NET. An advanced PDF form maker allows users to create editable PDF form in C#.NET.
convert excel to fillable pdf form; create pdf fill in form
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. convert PDF to text, C#.NET convert PDF to images Document Viewer for Azure, C# HTML Document Viewer
.net fill pdf form; create fillable form from pdf
TUGboat, Volume 32 (2011), No. 3
273
To call Pandoc with a custom template, use the
command line:
pandoc -r markdown -t latex
--template=./custom.latex
-o source.tex source.md
5.2 A Shortcut
The fastest way to turn a Markdown file into
PDF
is:
markdown2pdf --template=./custom.latex src.md
This will generate an intermediate LAT
E
Xfile and call
pdfLAT
E
Xto create the
PDF
.
With the options--xetex or--luatex, you can
select a different engine. The template detects the
engine and selects the appropriate code viaifxetex
and ifluatex.
5.3 Postprocessing
The generated L
A
T
E
X file is surprisingly good. It
matches files written by novice users.
Of course there may be some overfull and un-
derfull hboxes that need further attention.
6 A new target ahead: ePub
The original desire was to create an ePub file in
addition to the
PDF
file. The following command
will do that:
pandoc -r markdown -t epub
--epub-cover-image=cover-image.gif -s
-o Source.epub Source.md
The text will be split into separate files according
to the structure of the document. Thus it is easy to
post-process the file with an ePub editor like Sigil [6].
Version 1.8.1.2 added the option to include a
cover image (as shown above), thus reducing the
need for post-processing.
7 The road to OpenOffice
“May I have this as a Word file?” Who doesn’t know
this question? Let’s meet in the middle of the road
with a LibreOffice file.
1
pandoc -r markdown -t odt
--reference-odt=./reference.odt -s
-o source.odt source.md
The filereference.odt will be used as a tem-
plate for the formatting of the document. If you
want to change the design, you should modify the
file supplied with Pandoc to make sure the internal
style names match the ones used by Pandoc.
Writer2LaTeXcanconvertLibreOfficefilesintoL
A
T
E
X.
If you get an error when opening theodt file
complaining about a corrupt file, you need to update
Pandoc—a bug prior to version 1.8.1.3 led to the
creation of invalid files when images were included.
Including images is still problematic. The im-
ages are in the final document, but they have to be
rescaled.
8 Travel preparations
A small sed program removes some markup and
converts LAT
E
Xcharacters to UTF-8:
s/\\LaTeX/LaTeX/g
s/\\TeX/TeX/g
s/\\ConTeXt/ConTeXt/g
s/\\begingroup//
s/\\endgroup//
s/\\^o/ô/
s/\\o/ø/
Call this program on the command line with:
sed -f tex2mdtex.sed Source.tex
>Source-clean.tex
The result can be converted to Markdown with:
pandoc -r latex -t markdown -s
-o Source-clean.md Source-clean.tex
9 Road signs
9.1 Sectioning commands
Markdown supports six hierarchy levels for sectioning
commands. The number of # signs indicates the
level. There has to be an empty line in front of the
sectioning command.
# Top level
## Second level
### Third level
#### *Important information* hidden in
the fourth level
An alternative form of sectioning commands
only supports two levels:
First Level
===========
Second and last level
---------------------
9.2 Block Quotations
Markdown uses email conventions for quoting blocks
of text. Lines starting with a> character are treated
as block quotations.
Multi-target publishing
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. VB.NET, VB.NET convert PDF to HTML, VB.NET Convert multiple pages PowerPoint to fillable and editable
pdf form fill; convert pdf into fillable form
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. VB.NET convert PDF to HTML, VB.NET Convert multiple pages Word to fillable and editable
acrobat fill in pdf forms; convert an existing form into a fillable pdf form
274
TUGboat, Volume 32 (2011), No. 3
> This is a block quotation
>
> > And this is a block quotation
> > inside a block quotation.
>
>
> The > sign is only needed in the first
line of the quotation.
Aspecial kind of quotation is a quotation from
aprogram. This is usually printed in a monospaced
font. If a line starts with four spaces, it is treated as
averbatim text.
␣␣␣␣\documentclass[a4paper]{ltugboat}
␣␣␣␣\usepackage[utf8]{inputenc}
If you don’t want to indent every line, you can
use a delimited block, which begins with 3 or more
tilde (~) characters and ends with at least the same
number of tilde characters. If the code already con-
tains a row of tilde characters, use more to delimit
the quotation.
~~~~~~~~
This is a program listing
~~~~
Header preceded by tildes
~~~~
Body preceded by tildes
~~~~~~~~
9.3 Lists
There are several list types in Markdown that we
already know from LAT
E
X:
9.3.1 The itemize list
Theitemize list is started with a bullet character
(*, + or -).
* one
* two
* three
- three a
- three b
* four
If a list entry contains several paragraphs, the
paragraphs should be indented with four spaces or
one tab.
* one
* two
* three
- three a
- three b
* four
As usual, we hide important information
in the fourth item.
To be really sure, the 4 space rule is only
mentioned in the last paragraph.
9.3.2 The enumerate list
An ordered list is like a bullet list, but it starts
with an enumerator (1.,(1), ori.) instead. The
enumerators need not be in the correct order, even
if that looks funny.
This kind of enumeration automatically loads
theenumerate package to get custom enumerators.
The generic enumerator#. uses the enumerators
defined by the document class and avoids loading an
additional package.
1. one
2. two
4. three
a) three a
b) three b
5. four
Hiding important information ...
9.3.3 The description list
Sadly theseanimals from the Germanlshort haven’t
made it into the English version. Therefore I will
introduce them here.
The term described is on a line of its own; the
description follows in the next lines. The description
is started with a colon or tilde, indented by one or two
spaces. A term may have multiple descriptions, and
each description may have one or more paragraphs.
Gelse
: a small animal, living east of the
Semmering, that chases tourists away.
Gemse
: a large animal, living west of the
Semmering, chased away by tourists.
A long paragraph discussing
whether it should be Gemse or Gämse.
Gürteltier
~ A medium sized animal. It only appears here
because it has a long name.
~ In Austria, Gürteltiere are usually seen
only in zoological gardens.
Axel Kielhorn
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
Convert OpenOffice Text Document to PDF with embedded Create PDF document from OpenOffice Presentation in both ODT, ODS, ODP forms to fillable PDF formats in
create a fillable pdf form; create fill pdf form
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Convert multiple pages Word to fillable and editable PDF documents in both .NET WinForms and ASP.NET. Convert both DOC and DOCX formats to PDF files.
pdf create fillable form; converting a word document to pdf fillable form
TUGboat, Volume 32 (2011), No. 3
275
---------------------------------------------------------------------
Centered
Default
Right
Left
Header
Header
aligned
aligned
-------------
------- -------------
---------------------
First
row
12.0
Example of a row that
spans multiple lines.
Second
row
5.0
Here’s another one. Note
the blank line between rows.
----------------------------------------------------------------------
Figure 1: A multiline table
9.3.4 Numbered lists with references
Usually a new list starts with number 1. If you
want your items numbered throughout the document,
Markdown offers aspeciallist marker that is not reset.
These list markers can be used as a reference later, or
earlier. This is comparable to the caption counters
used by L
A
T
E
X, but doesn’t use the \label/\ref
mechanism and does not require a second L
A
T
E
Xpass.
(@Statement) Here I state something.
The statement (@Statement)
will be proved in (@Proof).
(@Proof) This is the proof.
9.4 Tables
Starting with version 1.8.1.2 Pandoc uses thectable
package to create tables. When entering tables it
is best to use spaces instead of tabs to align the
columns. There are three kind of tables.
Asimple table:
Right
Left
Center
Default
-------
------ -------- -------
12
12
12
12
123
123
123
123
ab
ab
ab
ab
Table: A simple table
The table header and the table rows must be
written on one line. The alignment is defined by the
dashed line below the header.
• Ifthedashedlineisflushwiththeheadertext
on the right side but extends beyond it on the
left, the column is right-aligned.
• Ifthedashedlineisflushwiththeheadertext
on the left side but extends beyond it on the
right, the column is left-aligned.
+------------+---------+----------------------+
| Fruit
| Price
| Advantages
|
+============+=========+======================+
| Bananas
| $3.14
| - built-in wrapper
|
|
|
| - bright color
|
+------------+---------+----------------------+
| Oranges
| $2.82
| - cures scurvy
|
|
|
| - tasty
|
+------------+---------+----------------------+
Figure 2: A grid table
• If thedashedlineextendsbeyondthe header
text on both sides, the column is centered.
• Ifthedashedlineisflushwiththeheadertext
on both sides, the default alignment is used (in
most cases, this will be left).
Atable must be terminated by an empty line.
You can provide a caption starting with the
stringTable:, or just the character:. AnyTable
and the colon will be removed from the output. The
caption may appear either before or after the table.
When a caption is used, the table will be set in a
tableenvironment,otherwiseitwillappearinthe
body text.
Multiline tables allow headers and table rows
to span multiple lines of text. The rows must be
separated by empty lines. An example is shown in
figure 1.
Agrid table is shown in figure 2. The cells may
contain arbitrary block elements, including lists.
9.5 Title
Information about the title, author and publication
can be given at the beginning of the file.
% Multi-target publishing
% Axel Kielhorn
% TUGboat Volume vv
Multi-target publishing
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Convert multiple pages PowerPoint to fillable and editable PDF documents. Easy to create searchable and scanned PDF files from PowerPoint.
change font in pdf fillable form; convert pdf file to fillable form
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Create fillable and editable PDF documents from Excel in both .NET WinForms and ASP.NET. Create searchable and scanned PDF files from Excel. Convert to PDF with
c# fill out pdf form; adding signature to pdf form
276
TUGboat, Volume 32 (2011), No. 3
Long titles may be broken into several lines.
% Viele Ziele\
(Multi-target publishing)
% Axel Kielhorn
Babel Fisch (Trans.)
% TUGboat Volume vv
The\ in the first line will be translated to\\
in the LAT
E
Xoutput.
9.6 Footnotes
Afootnote consists of two parts, the footnote marker
and the footnote text.
This is a footnote marker[^1]
and this is another footnote[^fussnote]
[^1]: Here is the footnote text
[^fussnote]: This footnote is slightly longer.
It contains a second paragraph.
9.7 Inline formatting
Italic text is surrounded by one* or_. Bold text is
surrounded by two* or_. If you want to emphasize
only a part of a word, you have to use* because_
is often used as part of a name.
This text was emphasized _with underlines_
and this *with asterisks*.
For __bold text__ you need **two** characters.
Superscripts are surrounded by^, subscripts by
~characters:
H~2~O is water, 2^10^ is 1024.
2^2^^2^ is 2^22^.
The output of the last line may be unexpected,
but note that these are text super- and subscript
commands, not math commands.
9.8 Math(s)
Inline math is surrounded by $ characters. It is
processed by LAT
E
X, thus everything allowed in LAT
E
X
is permitted.
$2^{2^2} != 2^{22}$
When using a different output format, the result
depends on the capabilities of that format.
Display math can be entered as raw LAT
E
X.
9.9 Raw L
A
T
E
X
Everything between a\begin and an\end will be
copied verbatim to the L
A
T
E
Xoutput and ignored in
all other formats.
9.10 Raw
HTML
Markdown was designed to create
HTML
. Therefore
it is possible to include raw
HTML
,which will be
ignored by non-
HTML
based formats.
9.11 Links
It is not surprising that a language designed to create
web pages supports hyperlinks. Everything included
between angle brackets is considered a link.
<http://johnmacfarlane.net/pandoc/>
Alink may appear in a paragraph.
Documentation may be found on the [pandoc
web site](http://johnmacfarlane.net/pandoc/).
9.12 Pictures
A picture is included by providing a link to that
picture and starting that link with a !.
![A blue picture](blau.jpg "Blue picture")
If the picture appears on a line of its own, it
will be set in afigure environment and the text in
the square brackets will be used as a caption text.
Otherwise, it will be included in the body text.
The ![red square](rot.png "red square") appears
in the body text.
There is no way to scale pictures, they need to
be in the correct size and resolution. This causes
problems when the same picture is used for the web
(72dpi) and printing (300dpi).
10 Next exit: ConT
E
Xt
Pandoc is able to generate ConT
E
Xt files. This is an
easy way to convert LAT
E
Xfiles to ConT
E
Xt.
With a filter module, ConT
E
Xt is able to directly
process Markdown by calling Pandoc with parts of
the document. See the Pandoc Extra Wiki [4] for
details.
11 Large documents .. .
The default settings for Pandoc is to create a docu-
ment without section numbers and without a table
of contents. This is fine as long as you write a short
document, but when the size exceeds a few pages it
would be better to have the sections numbered and
ashort overview over the contents:
pandoc -r markdown -t latex --number-sections
-o md-test.tex md-test.md
numbers the sections, and with
pandoc -r markdown -t latex --toc
-o md-test.tex md-test.md
atable of contents will be generated. Of course you
can combine the options.
Axel Kielhorn
C# Create PDF Library SDK to convert PDF from other file formats
HTML webpage to interactive PDF file creator freeware. Create and save editable PDF with a blank page, bookmarks, links Create fillable PDF document with fields.
convert pdf to fillable pdf form; convert fillable pdf to html form
VB.NET Create PDF from OpenOffice to convert odt, odp files to PDF
URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. VB.NET, VB.NET convert PDF to HTML, VB.NET Convert OpenOffice Spreadsheet data to PDF
.net fill pdf form; add fillable fields to pdf online
TUGboat, Volume 32 (2011), No. 3
277
12 .. . to full books
When you use the reportbook, ormemoir class,
Pandoc will use the\chapter command as the high-
est sectioning level. It doesn’t know about more
exotic classes, likescrbook. If you want to use these,
you have to request the chapters yourself:
pandoc -r markdown -t latex --chapters
-o md-test.tex md-test.md
You can split the source text into several files
and combine them when calling pandoc. This isn’t as
elaborate as the\include mechanism in L
A
T
E
X, but
considering the speed of current computers, there is
little need for\include/\includeonly. For a very
long document you have to call Pandoc with a very
long command line.
pandoc -r markdown -t latex
--number-sections --toc
--template=./report.latex
-o md-test.tex
md-test-intro.md
md-test-ch1.md
md-test-ch2.md
md-test-ch3.md
13 Conclusion
With Pandoc, it is straightforward to create
PDF
files with L
A
T
E
X without knowing anything about
L
A
T
E
X. All of the T
E
X processing can be hidden
by usingmarkdown2pdf and the various options in
ashell script (or batch file). For example, I wrote
an engine file for TeXShop that callsmarkdown2pdf
instead of T
E
X. “That’s too difficult” is no longer a
reason not to use LAT
E
X.
Pandoc, or rather the Markdown language, has
its limitations. If you need several kinds of foot- or
endnotes, several bibliographies or lots of math, Pan-
doc is certainly underpowered. But if you don’t need
these features, Pandoc is an easy way to write struc-
tured documents without a high learning threshold.
The main work goes into the design of the
templatefiles,whichshouldbecreatedandmain-
tained by a LAT
E
Xexpert.
14 Acknowledgements
This article originally appeared in the journal Die
T
E
Xnische Komödie [3], in German; the translation
here is by the author. Some text used in this article
is copied from the Pandoc–Markdown man page.
15 Appendix: Supplementary material
The following are included in the supplementary
material you can download from the
TUG
server [2]:
md-test-tug.md The examples from this article.
md-test-tug.tex Converted L
A
T
E
X.
md-test.pdf Set with pdfLAT
E
X.
md-test.epub Converted to ePub.
tex2mdtex.sed AsedscripttomakegeneralLAT
E
X
documents palatable to Pandoc.
pandoc.pdf Pandoc man page.
pandoc-markdown.pdf Manpagedescribingthe
Markdown syntax used in Pandoc.
markdown2pdf.pdf markdown2pdf man page.
engines A folder with engine files for TeXShop.
(They will be in the next official release.)
⋄ Axel Kielhorn
Lesumstraße 10
D-27283 Verden
Germany
Adot Kielhorn (at) web dot de
References
[1] JohnGruber. DaringFireball: : Markdown,
2004. http://daringfireball.net/projects/
markdown/.
[2] AxelKielhorn. Supplementarymaterial,
2011. http://tug.org/TUGboat/tb32-3/
tb102kielhorn-supp.zip.
[3] AxelKielhorn. VieleZiele—Multi-Target
Publishing. Die T
E
Xnische Komödie, 3:21–32,
2011.
[4] JohnMacFarlane. PandocExtras,2011.
http://github.com/jgm/pandoc/wiki/
Pandoc-Extras.
[5] JohnMacFarlane.Pandoc—Aboutpandoc,2011.
http://johnmacfarlane.net/pandoc/.
[6] StrahinjaMarković. Sigil—A
WYSIWYG
ebook
editor, 2011. http://code.google.com/p/
sigil/.
Multi-target publishing
278
TUGboat, Volume 32 (2011), No. 3
On the use of T
E
Xas an authoring language
for
HTML
5
S.K. Venkatesan
Abstract
The T
E
Xsyntax has been fairly successful at mark-
ing up a variety of scientific and technical literature,
making it an ideal authoring syntax. The brevity
of the T
E
Xsyntax makes it difficult to create over-
lapping structures, which in the case of
HTML
has
made life so difficult for
XML
purists. We discuss
S-expressions, the T
E
Xsyntax and how it can help
reduce the nightmare that
HTML
5markup is going
to create. Apart from this we implement a new syn-
tax for marking up semantic information (microdata)
in T
E
X.
1 Introduction
The brevity of T
E
Xsyntax has made it fairly success-
ful at marking up a variety of scientific and techni-
cal literature. On the one hand, modern markup
languages such as
(X)HTML
and
XML
have ver-
bose syntax which is not only difficult to author
but also produces non-treelike structures such as
overlapping structures that need to be checked for
well-formedness. On the other hand, T
E
Xand its
macros are difficult to parse and validate, compared
to
XML
with a
DTD
or schema. Many
XML
versions
of T
E
Xhave been proposed such as T
E
X
ML
[3] and
XL
A
T
E
X [5] that are intrinsically close to (L
A
)T
E
X.
The main advantage of such a system is that one
can introduce a validator using a
DTD
or schema to
check the syntax before passing it to the T
E
Xengine.
However,
XML
syntax is difficult to author and
in fact is prone to producing overlapping structures
that need to be avoided for it to be well-formed,
and as a result these
XML
versions have not become
popular for authoring. In this article, we propose
something that is quite the reverse, i.e., T
E
Xas an
authoring syntax for both
XML
and
HTML
.
2 T
E
X, S-expressions and
XML
Let us look at the following T
E
Xcode:
\title[lang=en]{Title of
a \textit{plain} article}
The same code in a Lisp-like S-expression would be:
(title (@ (lang="en")) ("Title of a ")
(italic "plain") ("article"))
or if one would like to treat elements and attributes
in the same way:
(title (@lang="en") ("Title of a ")
(italic "plain") ("article"))
The difference between the above two S-expressions
is that the former introduces a deliberate asymmetry
between attributes and elements, whereas the latter
treats attributes on a par with elements. However,
both S-expressions can be considered as an improve-
ment on
XML
as they allow further nesting within
attributes. The corresponding
XML
code would be:
<title lang="en">Title of
a <italic>plain</italic> article</title>
In both T
E
X and
XML
syntax, further nesting of
structures is not possible within attributes, which
makes T
E
Xideal for authoring
XML
or
HTML
5.
There are further similarities between the T
E
X
and
SGML/HTML
syntaxes. Attribute minimization
used in
HTML
,like not quoting attribute values, is
very much practiced in T
E
Xsyntax, more as a rule
rather than the exception; e.g.,
\includegraphics[width=2cm]{myimage.gif}
Unlike
SGML/HTML
,T
E
Xtypically uses a comma
as the separator between attributes, instead of the
word-space used in
SGML/HTML
. T
E
X also uses
complete skipping of attribute values, similar to the
commonly used
HTML
code: <option selected>.
Quite like T
E
X,
HTML
also has the practise of shrink-
ing multiple spaces to a single space. All of these
similarities make it clear that authoring
HTML
in
T
E
Xwould be an ideal proposition.
3 Overlapping markup in
HTML
Since
HTML
is marked up by humans, there tend
to be many situations with overlapping elements or
other eccentric markup which do not confirm to a
well-formed
SGML
or
XML
syntax. Consider the
HTML
markup:
<p>Text with <i>unique <b>and</i>
strong formatting</b> issues</title>
Autility like
HTML
Tidy [6] or TagSoup [1] can
convert this into well-formed markup such as:
<p>Text with <i>unique </i><b><i>and</i>
strong formatting</b> issues</title>
However, it is not always clear what should be
done with such a non-standard markup. The
HTML
5
specification defines clearly how such a non-standard
markup should be interpreted [7] but the
HTML
implementations in browsers currently deal with it
differently from each other.
W3C
has been insisting for some time that the
next generation of markup should be
XML
-compliant
like
XHTML
+Math
ML
+
SVG
profiles, with other in-
tricacies such as namespaces. However, more than
99% of
HTML
pages in the wild are invalid, accord-
ing to the
HTML
4
DTD
or schema. This being the
S.K. Venkatesan
TUGboat, Volume 32 (2011), No. 3
279
case,
W3C
gave up on the idea of an
XML
solution
and moved on to
HTML
5with added elements and
features, such as Math
ML
,
SVG
and video, audio and
additional microdata elements.
Given the experience with
HTML
4, it can be
safely predicted that the more features one adds
to
HTML
, the greater the scope for non-standard
markup such as overlaps and entanglement that can
create a great deal of difficulty for browsers and
users.
We will consider here, e.g., Microsoft’s interpre-
tation of Math
ML
in
HTML
5. Microsoft has been
pushing for certain agenda in Math
ML
3(although
Imust say with great relief that much of it has not
been accepted by the Math
ML
committee). Based on
their own experience with
OML
,a subset of
OOXML
markup, they would like to add formattingfeatures in
Math
ML
such as bold, italic and paragraph elements
inside Math
ML
. Consider the following markup:
<math><b><mi>r</mi></b>=<mfenced><mi>x</mi>
<mi>y</mi></mfenced></math>
the corresponding pure Math
ML
coding would be:
<math><mi mathvariant="bold-italic">r</mi>
<mo>=</mo><mfenced><mi>x</mi>
<mi>y</mi></mfenced></math>
Mixing elements from different namespaces is
one of the side effects one can expect in
HTML
5. It
is not clear if Math
ML
elements could be included
within
SVG
elements or vice versa. One can expect
such new non-standard markups to be created that
will be quite difficult for browsers to handle.
New elements such as<section> have been in-
troduced, so one can expect more confusion:
<section><h2>Section title</h2>
<section><h1>Another section title</h1>
</section>
</section>
The intended meaning of<h1> or<h2> is not clear
from the above markup, and you could say either ‘I
mean what I say’ or ‘I say what I mean’, with our
own impressionistic interpretations.
In this article we do not want to convey the
impression that everything about
HTML
5is out of
the wild west; rather, it is a rich arena that needs
to be authored carefully, because there are so many
pitfalls. In fact,
HTML
5introduces new features like
Math
ML
,
SVG
,video and audio features that are
essential for further enrichment of basic content [4].
The important reason for using a T
E
X-like system is
that it doesn’t allow one to see the output if there
are errors in the code and one can only produce
well-formed code.
4 T
E
Xas an input format for
HTML
5
In this section we would like introduce LAT
E
Xenviron-
ment for authoring HTML5. Many of these features
have been introduced before, say, e.g., in XL
A
T
E
X
and other concepts.
4.1 Main structural elements
of the document
HTML
5has introduced new content elements that
bring it closer to the standard L
A
T
E
X classes. We
propose the following T
E
Xmacros.
No.
HTML
LAT
E
X
Description
1
<article>#1
\begin{article}
</article>
#1
article
\end{article}
headings:
2
<h1>#1</h1>
\Ha{#1}
—level one
3
<h2>#1</h2>
\Hb{#1}
—level two
4
<h3>#1</h3>
\Hc{#1}
—level three
4
<h4>#1</h4>
\Hd{#1}
—level four
5
<p>#1</p>
\p{#1}
paragraph
6
<span>#1</span> \s{#1}
text span
4.2 Simple formatting elements
We propose the following T
E
X macros for
HTML
formatting elements:
No.
HTML
LAT
E
X
Description
1
<b>#1</b>
\B{#1} bold
2
<i>#1</i>
\I{#1} italic
3
<b><i>#1</i></b> \BI{#1} bold-italic
4
<tt>#1</tt>
\M{#1} text
5
<sup>#1</sup>
\sp{#1} superscript
6
<sub>#1</sub>
\sb{#1} subscript
4.3 Math
ML
elements
We propose the following T
E
Xmacros for Math
ML
formatting elements:
No. Math
ML
L
A
T
E
X
Description
1 <mrow>#1</mrow>
{#1}
grouping
2 <mi>#1</mi>
{#1}
variables
3 <mo>#1</mo>
{#1}
operators
4 <mn>#1</mn>
{#1}
numbers
5 <mtext>#1</mtext>
\mbox{#1}
monospace
6 <mfrac>#1#2</mfrac>
\frac{#1}{#2} fraction
7 <msup>#1#2</msup>
{#1}^{#2}
superscript
8 <msub>#1#2</msub>
{#1}
{#2}
subscript
9 <mover>#1#2</mover>
{#1}^{#2}
over
10 <munder>#1#2</munder> {#1}
{#2}
under
On the use of T
E
Xas an authoring language for
HTML
5
280
TUGboat, Volume 32 (2011), No. 3
No.
SVG
LAT
E
X
Description
1
<circle cx="#1" cy="#2" r="#3"
\circle[x=#1,y=#2,r=#3
circle
style="stroke:#4;
s=#4,sw=#5,f=#6]
stroke-width:#5;fill:#6;"/>
2
<ellipse cx="#1" cy="#2" rx="#3"
ry="#4" style="stroke:#5;
\ellipse[x=#1,y=#2,rx=#3, ellipse
stroke-width:#6;fill:#7;"/>
ry=#4,s=#5,sw=#6,f=#7]
3
<rect x="#1" y="#2" width="#3"
height="#4" style="stroke:#5;
\rect[x=#1,y=#2,w=#3,
rectangle
stroke-width:#6;fill:#7;"/>
h=#4,s=#5,sw=#6,f=#7]
Table 1: Proposed T
E
Xmacros for
SVG
formatting elements.
No. Microdata L
A
T
E
X
Description
1
itemscope
\s[is=on]
top element that indicates
descendants are in scope
2
itemtype
\s[it=http://
property
URL
data-vocabulary.org/Person]
3
itemid
\s[iid=p0312]
unique
ID
of the person
4
itemprop
\s[ip=name]
name of the person
5
itemref
\s[ir=http://
reference
URL
www.ctan.org/pub/article]
Table 2: Proposed T
E
Xmacros for
HTML
5microdata.
4.4
SVG
elements
We propose the T
E
Xmacros in table 1 for
SVG
for-
matting elements. These can be implemented using
LAT
E
Xgraphics packages such as TikZ [2].
4.5 Microdata attributes
Since microdata (semantic) attributes can be added
to any of the basic
HTML
elements, we need to be
able to add attributes to any of the
HTML
5T
E
X
macros as well. Table 2 shows how these microdata
attributes for<span> element are indicated using
T
E
Xmacro \s defined in §4.1.
5 Mu
LT
iFlow
We have created a
WYSIWYG
editor for authoring
HTML
5, released under the
GPL
v3 license. It can
be installed either as a Firefox addon or as a stand-
alone program. The project is hosted athttp://
sourceforge.net/projects/multiflowandisalso
available through the Firefox addon network. At
present this editor uses
HTML
5and
UTN
28 markup
for authoring complex equations, but it will use the
proposed T
E
X syntax for authoring
HTML
5from
version 1.1 onwards.
References
[1] JohnCowan,TagSoup: ASAXparserinJava
for nasty, ugly HTML,
http://home.ccil.org/
~
cowan/tagsoup.
[2] AndrewMertzandWilliamSlough,Graphics
with PGF and TikZ, TUGboat 28:1 (2007),
91–99,http://tug.org/TUGboat/tb28-1/
tb88mertz.pdf.
[3] OlegParashchenko,T
E
XML: Resurrecting
T
E
Xin the XML world, TUGboat 28:1 (2007),
5–10,http://tug.org/TUGboat/tb28-1/
tb88parashchenko.pdf.
[4] MarkPilgrim,HTML5: UpandRunning,Dive
into the Future of Web Development, O’Reilly
Media, 2010.
[5] JohnPlaiceandYannisHaralambous,XL
A
T
E
X,
aDTD/schema which is very close to L
A
T
E
X,
TUGboat 24:3 (2003), 369–376,http://tug.
org/TUGboat/tb24-3/haralambous.pdf,
http://omega.enstb.org/xlatex.
[6] Dave Raggett, HTML Tidy,
http://tidy.sourceforge.net.
[7] W3C, HTML5 Working draft,
http://www.w3.org/TR/html5/introduction.
html#syntax-errors.
⋄ S.K. Venkatesan
TNQ Books and Journals
Chennai, India
skvenkat (at) tnq dot co dot in
S.K. Venkatesan
Documents you may be interested
Documents you may be interested