File: rtf.c

package info (click to toggle)
latex2rtf 2.3.18a-5
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,392 kB
  • sloc: ansic: 20,424; makefile: 660; sh: 478; perl: 22
file content (69 lines) | stat: -rwxr-xr-x 2,043 bytes parent folder | download | duplicates (4)
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
#include <stdio.h>
#include "main.h"
#include "utils.h"
#include "convert.h"
#include "labels.h"
#include "rtf.h"

/******************************************************************************
 purpose: emit RTF code for a bookmark
 ******************************************************************************/
void emitBookmark(char *extra, char *presignet,char *signet,char *text)
{
    fprintRTF ("{%s\\*\\bkmkstart %s%s}", extra,presignet,signet);
    ConvertString(text);
    fprintRTF ("{\\*\\bkmkend %s%s}", presignet,signet);
}
/******************************************************************************
 purpose: emit RTF code to reference a bookmark
 ******************************************************************************/
void InsertReference(char *text,
             referenceGetter *getRef)
{
    char *s = getRef(text);
    ConvertString(NULL != s ? s : "\\textbf{??}");
    safe_free(s);
}

/*
  referenceBookmark("REF","\\\\* MERGEFORMAT","BM",signet,text,getLabelSection);
  referenceBookmark("REF","\\\\* MERGEFORMAT","BIB_",signet,t,NULL);
  referenceBookmark("PAGEREF","\\\\p","BM",signet,text,NULL);
  referenceBookmark("PAGEREF","\\\\* MERGEFORMAT","BM",signet,text,NULL);
*/
static void callBookmark(char *pre,
             char *post,
             char *type,
             char *signet,
             char *text,
             referenceGetter *getRef)
{
    fprintRTF("{\\field{\\*\\fldinst{\\lang1024 %s %s%s %s }}",
          pre,type,signet,post);
    
    if (NULL != text) {
    fprintRTF ("{\\fldrslt{");
    if (NULL == getRef) {
        fprintRTF(text);
    } else {
        InsertReference(text,getRef);
    }
    fprintRTF("}}");
    }
    fprintRTF("}");
}

void referenceBookmark(char *type,
               char *signet,
               char *text,
               referenceGetter *getRef)
{
    callBookmark("REF","\\\\* MERGEFORMAT",type,signet,text,getRef);
}

void pageBookmark(char *type,
          char *signet)
{
    callBookmark("PAGEREF","\\\\* MERGEFORMAT",type,signet,NULL,NULL);
}