Il testo pre-formattato--tipicamente codice-- viene preparato in Notes usando una tabella 1x1 con una sola cella e con il testo in Courier. In questo caso viene generato un SGML che rispetta perfettamente il layout originale inclusi gli a capi e le spaziature. In questo testo si traducono comunque le entità. Il markup presente nella tabella viene ignorato. Gli eventuali comandi Break vengono tradotti in un semplice a capo.
Private Function getRawText(iStart As Long, iEnd As Long, doBreak As Integer) As String
Dim iCur As Integer
getRawText = ""
For iCur = iStart To iEnd
If aRec(iCur).rt = RT_TEXT Then
Dim i As Integer
Dim ws As String
Dim ac As Long
ws = aRec(iCur).text
For i = 1 To Len(ws)
ac = Asc(Mid$(ws, i, 1))
'SgmlPrint "Char " & Cstr(ac)
If (ac >= 0 And ac <= 255) Then
If (ac = 0 And doBreak = True) Then
getRawText = getRawText & "<BR>" & Chr(10)
Else
getRawText = getRawText & cCode(ac)
End If
End If
Next i
End If
Next iCur
End Function
|
Se il tutto funziona correttamente l'utente può creare formattazioni manuali complesse rispettando l'allineamento originale:
Codice * Descrizione * Tipo * Valore *
---------- * --------------------------------------- * ---------- * -------------------- *
* * * *
JPA * John Peter Arnold * Interno * 2.500,00 *
* via Wittgens 5 * * *
* 20123 Milano * * *
GB * Gabriella Bozzolo * Interno * 1.242.500,00 *
FR * Franco Radice * Interno * (5.552.500,00) *
PE * Paola Elisio * Esterno * 65.000.500,00 *
---------- * --------------------------------------- * ---------- * -------------------- *
* * * 60.693.000,00 *
---------- * --------------------------------------- * ---------- * -------------------- *
|
Nell'esempio che segue si utilizza un blocco pre per simulare un disegno. Il blocco è stato costruito in modo tale da evidenziare qualunque disallineamento o carattere aggiuntivo. Se il tutto funziona le lettere saranno correttamente formattate esattamente come nell'originale documento che proviene da Notes.
XXXXX XXXXXXXXXXX XXXXXXX
XXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXX
XXX XXX XXX XXX XXX XXX
XXX XXX XXX XXX XXX XXX
XXX XXX XXX XXX XXX
XXX XXX XXX XXX XXX
XXXXXXXXXXXXXXX XXXXXXXXXXXXX XXX
XXXXXXXXXXXXXXX XXXXXXXXXXXXX XXX
XXX XXX XXX XXX XXX
XXX XXX XXX XXX XXX
XXX XXX XXX XXX XXX XXX
XXX XXX XXX XXX XXX XXX
XXX XXX XXXXXXXXXXXXXX XXXXXXXXXXX
XXX XXX XXXXXXXXXXX XXXXXXX
|
Infine è utile vedere come viene un blocco di codice in 'C'. Questo linguaggio, alla pari del Perl è una sinfonia di caratteri speciali sopratutto per il TeX.
int a = 0;
if (&pippo = &paperino)
{
a = Dipl(&paperino, 10);
}
return a;
|