# Re: [t2t] txt2tags version 3.0 -- Time to rethink everything WAS Customizing headers

Hello everybody
Hello Aurelio and thanks for your tool,

for the next 3.0, I would like to share the following ideas (it is a bit
long, you have been warned:) ).
My main  point is that I would really like to have the ability to
*simply* customize templates. It appears to be a sub-item of the last
I will try to convince the audience that it is worth to let it be a bit
upper in the hierarchy of improvements.

The general context is the following: how to be able to customize
headers while remaining faithful to txt2tags ideas and concepts:
- multi-target: no duplication of content
- the title, etc is really the title...
- concentrate only on content

I did not very investigate deeply the matter but there seems to be two
major kinds of solutions regarding customization of headers. The first
one is to use simple preprocs to expand/replace the default headers. The
second one is to use the --no-headers option and include or append

IMHO, the first solution can be quite difficult to implement (depending
on your knowledge of t2t and/or the TARGET language) or have ascending
compatibility problem: changing the default headers could break the
preprocs.
The second solution loose some useful txt2tags features (like the title
...) and so, if you do not want to loose them, it could end in
cluttering  the t2t files with distractions, or could imply using other
processing tools.

Let's have a look at the situation where I want to write a document with
two targets: html and tex. Actually *three*, because I love when the
.t2t source is exactly the .txt I can share with people that are not
necessarily txt2tags aware.

--8<----- A Typical example for customization with --no-headers -----
The title1
The title2
The title3

%!postproc(html): '(?i)(<title>)'       '\1The actual title1'
%!postproc(tex): '(?i)(\title{)'        '\1The same actual title1'
%!postproctrick(html):                  '\1The actual title2'
%!postproctrick(tex):                   '\1The same actual title2'
%!postproctrick(html):                  '\1The actual title3'
%!postproctrick(tex):                   '\1The same actual title3'

%% Do not forget!

The introduction for the text I am really focussed on....

= Section 1 =

Blah blah

= Section 2 =

Bla....

%% Do not forget!
%!include(html): ""footer-start.html""
%!include(tex): ""footer-start.tex""
%!include(html): ""footer-end.html""
%!include(tex): ""footer-end.tex""
--8<-------------------------------------------------------------------

I would prefer to have my own t2t file to be simply

--8<----- A proposed file -----
The title1
The title2
The title3

The introduction for the text I am really focussed on....

= Section 1 =

Blah blah

= Section 2 =

Bla....

--8<-------------------------------------------------------------------

And the command for processing to be
and use the appropriate header.TARGET file (see examples below). Such
files should be fairly easy to create, ie as difficult as creating a
TARGET file, and requiring no precise knowledge of txt2tags.

footer templates. Trying to fully address the problematic of
customization, I then propose four possible enhancements regarding the
implementation of the use of alternative templates:

T1: an option to replace the template from txt2tags.py
T2: merge the HEADER_TEMPLATE and EOD tags, add a %(BODY)s that is
replaced by what is processed from the body part by txt2tags.
T3: introduce new %(STUFF)s macros for templates
T4: possibility to associate (implicitly) a configuration file to any
template

Imho, T2, ie fully customizable templates with a %(BODY) to be remplaced
by what is processed by txt2tags, should be implemented for v3.

For T3, I don't know if it is already possible to use directly say
%%Mtime in the HEADER_TEMPLATE. I do not think it is.

For T4, the idea is to reduce the number of sub-dialect target requests
(why latex-beamer and not latex-book?), etc...

I also think that the implementation of these ideas would probably not
imply any compatibility break. I underline here that, for the best of my
knowledge, some template customizations by postproc tricks require that
the templates in txt2tags.py do not change too much. That is quite

I finish by exposing some cases of use (and some examples of possible
templates).

T1:
this is the beginning of my post. Actually, it is only adding an
option to override the hardcoded HEADER_TEMPLATES[TARGET].

T2:
Would address the footer problem in my example.

This is also a way to have templates that are as close as possible of
regular target files.
Somebody *without any txt2tags knowledge* should be able to create a
template and possibly visualize it (easier in html than in say
tex wit the current %() syntax though...). Then someone without any
CSS/XHTML knowledge could use  the template with txt2tags.

T3:
Add %(MTIME)s to add the modification time in the template. Come to
mind also %(DATE)s, %(TOC)s, %(INFILE)s, %(OUTFILE)s ...
This yields the question whether to have standard txt2tags directives
in the templates. Eg, it would be possible to have the same
customization as for %%Date.

Some examples of possibles templates:
--8<---------------------- template.html -----------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<META NAME="generator" CONTENT="http://txt2tags.sf.net";>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=%(ENCODING)s">

<!-- A lot of META, robot, IE hacks can be added -->

<BODY BGCOLOR="white" TEXT="black">

<IMG SRC="logo.png"></IMG>

<!-- html code for a nav bar -->

<FONT SIZE="4">
</FONT></CENTER>

%(BODY)s

</BODY>
--8<-------------------------------------------------------------------

--8<-------------------- template.tex ---------------------------------
\documentclass{report}
\usepackage{graphicx}
\usepackage[normalem]{ulem} %% needed by strike
\usepackage[%(ENCODING)s]{inputenc}  %% char encoding
\usepackage{%(STYLE)s}  %% user defined

\begin{document}
\includegraphics{logo.png}
\maketitle

%% No \clearpage.

%(BODY)s

\vfill
--8<-------------------------------------------------------------------

T4:
It could be possible to associate a macro bank, a url bank, a smiley
bank, ..., to a template. It can already be done by including
configuration files, but it could be more convenient this way.

It would also be possible to implements sub-dialect of the target
types. Eg,  proper header for a book in latex is "just" a matter of
changing \documentclass{article} by \documentclass{book} and all
\section by \chapter, etc.... This is quite exactly the same for
latex-beamer (resp.  "beamer" and something
like "\begin{frame}\frametitle" ...).
This way, with the right preprocs, one would not have to argue whether
we should have latex-beamer (as it is (was?) proposed) and not
latex-book. Any sub-dialect could be prototyped this way (a tex
template + a configuration file that is automatically loaded) and
added as a contributed template to the txt2tags package.
For latex-beamer, it might be also possible to add PAUSE macros or the
likes. Maybe a solution is better related to the new tagged mark.

A last case of use was the recent inquiry about latex + R + sweave...

I do agree that my last T4 request is probably not so KISS but I think
T3 is. The implementation of T3 would be of great interest for me and
probably other people.

Thanks you for reading all those suggestions,

Emmanuel

------------------------------------------------------------------------------
_______________________________________________
txt2tags-list mailing list
https://lists.sourceforge.net/lists/listinfo/txt2tags-list