\ Copyright 2003,2007 - J.L. Bezemer \ Converts textfiles to LyX sourcefiles \ -- INPUT FORMAT -- \ o Save your file as plain text, CR and/or LF as \ terminators of PARAGRAPHS \ o MS-Word, use Text (*.txt) or MS-DOS text (*.txt) \ o Fancy layouts are obviously lost! \ -- INPUT FORMAT -- \ -- BUGS & LIMITATIONS -- \ o In some rare cases, spaces are omitted between words \ o TABS are converted to SPACE \ o Other non-printable characters are replaced by ^ \ o Empty lines can create empty paragraphs \ o Lines not terminated by a '.' are handled differently \ -- BUGS & LIMITATIONS -- [NEEDS lib/ascii7.4th] 80 constant maxcpl \ how many characters per line /tib -1 [+] constant tib| \ address of the end of TIB variable cpl \ number of characters output true value nospace? \ should we emit a space? : newline cr 0 cpl ! ; \ start a new line : Preprocess \ REQUIRED by convert.4th ." #4tH 3.5b created this file. For more info see http://hansoft.come.to/" cr ." \lyxformat 221" cr \ other possible versions are: ." \textclass article" cr \ 210, 215, 216, 217, 218, 220 ." \begin_preamble" cr \ may be dropped (KLyX) ." \usepackage{latexsym}" cr \ may be dropped (KLyX) ." \end_preamble" cr \ may be dropped (KLyX) ." \language dutch" cr \ 'english' is ok too ;-) ." \inputencoding auto" cr ." \fontscheme pslatex" cr ." \graphics default" cr ." \paperfontsize default" cr ." \spacing single " cr ." \papersize a4paper" cr ." \paperpackage a4" cr ." \use_geometry 0" cr ." \use_amsmath 0" cr ." \use_natbib 0" cr \ 221 only ." \use_numerical_citations 0" cr \ 221 only ." \paperorientation portrait" cr ." \secnumdepth 3" cr ." \tocdepth 3" cr ." \paragraph_separation indent" cr \ 'skip' is ok too ." \defskip medskip" cr ." \quotes_language english" cr ." \quotes_times 2" cr ." \papercolumns 1" cr ." \papersides 1" cr ." \paperpagestyle default" cr cr ." \layout Standard" newline ; : PostProcess \ REQUIRED by convert.4th ." \layout Standard" cr cr ." \the_end" cr ; \ REQUIRED by convert.4th : Usage abort" Usage: txt2lyx infile outfile " ; : Read-file refill ; \ REQUIRED by convert.4th \ if true, do a CR : ?cr ( f --) if newline then ; \ do we cross the MaxCPL limit? : ?eol ( n --) cpl @ + maxcpl > ?cr ( --) ; \ is the last char a '.'? : ?dot ( a n --) 1- chars + c@ ( c) [char] . = ?cr ( --) ; \ if true, emit a space : ?space ( --) nospace? if false to nospace? \ reset nospace? flag else space 1 cpl +! \ output a space then ; \ output a space and a word : .word ( a n --) dup ?eol ( a n) \ do we cross the linesize? ?space dup cpl +! ( a n) \ update printed chars over over type ( a n) \ now type the word ?dot ( --) \ does the word end with a dot? ; \ blank at end of buffer? : bl-at-end? ( f --) if ( --) newline \ print LyX header ." \layout Standard" \ we're starting a new paragraph newline true \ first line no space else >in @ tib| = \ scanned the last char? tib tib| 1- chars + c@ bl <> \ and: last char not a space? and \ then: we will not print a space then to nospace? ; \ blank at begin of buffer? : bl-at-start? ( a --) c@ bl <> ( f) nospace? and to nospace? ( --) ; \ get flags : status? ( n -- f1 f2) tib| over <> swap 0= ( f f) ; \ REQUIRED by convert.4th : Process tib count ( a n) \ equivalent to SOURCE swap over over ( n a n a) bl-at-start? ( n a n) \ check start buffer s>ascii7 drop drop ( n) \ clean buffer status? if ( f) \ if set, we add some space ." \added_space_top bigskip" cr drop else ( f) \ otherwise we got a full buffer begin ( f) bl parse-word ( f a n) \ parse for a blank dup 0<> ( f a n f) while ( f a n) \ if successful then .word ( f a n) \ output the word repeat ( f --) \ and get next word drop drop ( f) \ drop addr/len bl-at-end? ( --) \ check end buffer then ( --) \ buffer processed ; [needs lib/convert.4th]