The R Project SVN R

Rev

Rev 14544 | Rev 15234 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 14544 Rev 15168
Line 5... Line 5...
5
## Examples:
5
## Examples:
6
##  R CMD Rd2dvi /path/to/Rsrc/src/library/base/man/Normal.Rd
6
##  R CMD Rd2dvi /path/to/Rsrc/src/library/base/man/Normal.Rd
7
##  R CMD Rd2dvi `grep -l "\\keyword{distr" \
7
##  R CMD Rd2dvi `grep -l "\\keyword{distr" \
8
##                  /path/to/Rsrc/src/library/base/man/*.Rd | sort | uniq`
8
##                  /path/to/Rsrc/src/library/base/man/*.Rd | sort | uniq`
9
 
9
 
10
revision='$Revision: 1.33 $'
10
revision='$Revision: 1.34 $'
11
version=`set - ${revision}; echo ${2}`
11
version=`set - ${revision}; echo ${2}`
12
version="Rd2dvi ${version}
12
version="Rd2dvi ${version}
13
 
13
 
14
Copyright (C) 2000-2001 The R Core Development Team.
14
Copyright (C) 2000-2001 The R Core Development Team.
15
This is free software; see the GNU General Public Licence version 2
15
This is free software; see the GNU General Public Licence version 2
Line 25... Line 25...
25
  -h, --help		print short help message and exit
25
  -h, --help		print short help message and exit
26
  -v, --version		print version info and exit  
26
  -v, --version		print version info and exit  
27
      --debug		turn on shell debugging (set -x)
27
      --debug		turn on shell debugging (set -x)
28
      --no-clean	do not remove created temporary files
28
      --no-clean	do not remove created temporary files
29
      --no-preview	do not preview generated output file
29
      --no-preview	do not preview generated output file
30
      --os=NAME		use OS subdir \`NAME\' (unix, mac or windows)
30
      --os=NAME		use OS subdir \`NAME' (unix, mac or windows)
31
      --OS=NAME		the same as \`--os\'
31
      --OS=NAME		the same as \`--os'
32
  -o, --output=FILE	write output to FILE
32
  -o, --output=FILE	write output to FILE
33
      --pdf		generate PDF output
33
      --pdf		generate PDF output
34
      --title=NAME	use NAME as the title of the document
34
      --title=NAME	use NAME as the title of the document
35
  -V, --verbose		report on what is done
35
  -V, --verbose		report on what is done
36
 
36
 
Line 47... Line 47...
47
output=""
47
output=""
48
preview=xdvi
48
preview=xdvi
49
verbose=false
49
verbose=false
50
OSdir=${R_OSTYPE-"unix"}
50
OSdir=${R_OSTYPE-"unix"}
51
 
51
 
-
 
52
## Need a `safe' echo which does not interpret backslash-escaped
-
 
53
## characters in SysV style.
-
 
54
echo="sh ${R_HOME}/share/sh/echo.sh"
-
 
55
 
52
while test -n "${1}"; do
56
while test -n "${1}"; do
53
  case ${1} in
57
  case ${1} in
54
    -h|--help)
58
    -h|--help)
55
      echo "${usage}"; exit 0 ;;
59
      ${echo} "${usage}"; exit 0 ;;
56
    -v|--version)
60
    -v|--version)
57
      echo "${version}"; exit 0 ;;
61
      ${echo} "${version}"; exit 0 ;;
58
    --debug)
62
    --debug)
59
      debug=true ;;
63
      debug=true ;;
60
    --no-clean)
64
    --no-clean)
61
      clean=false ;;
65
      clean=false ;;
62
    --no-preview)
66
    --no-preview)
Line 70... Line 74...
70
      title=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
74
      title=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
71
    -o)
75
    -o)
72
      if test -n "`echo ${2} | sed 's/^-.*//'`"; then      
76
      if test -n "`echo ${2} | sed 's/^-.*//'`"; then      
73
	output="${2}"; shift
77
	output="${2}"; shift
74
      else
78
      else
75
	echo "ERROR: option \`${1}' requires an argument"
79
	${echo} "ERROR: option \`${1}' requires an argument"
76
	exit 1
80
	exit 1
77
      fi
81
      fi
78
      ;;
82
      ;;
79
    --output=*)
83
    --output=*)
80
      output=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
84
      output=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
81
    --OS=*|--os=*)
85
    --OS=*|--os=*)
82
      OSdir=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
86
      OSdir=`echo "${1}" | sed -e 's/[^=]*=//'` ;;
83
    -V|--verbose)
87
    -V|--verbose)
84
      verbose=echo ;;
88
      verbose=${echo} ;;
85
    --|*)
89
    --|*)
86
      break ;;
90
      break ;;
87
  esac
91
  esac
88
  shift
92
  shift
89
done
93
done
Line 111... Line 115...
111
  if test -d ${1}; then
115
  if test -d ${1}; then
112
    files=`ls ${1}/*.[Rr]d`
116
    files=`ls ${1}/*.[Rr]d`
113
    if test -d ${1}/${OSdir}; then
117
    if test -d ${1}/${OSdir}; then
114
      files="${files} `ls ${1}/${OSdir}/*.[Rr]d`"
118
      files="${files} `ls ${1}/${OSdir}/*.[Rr]d`"
115
    fi
119
    fi
116
    files=`LC_ALL=C echo ${files} | sort`
120
    files=`LC_ALL=C ${echo} ${files} | sort`
117
  else
121
  else
118
    files="${@}"
122
    files="${@}"
119
  fi
123
  fi
120
 
124
 
121
  echo "Converting Rd files to LaTeX ..."
125
  echo "Converting Rd files to LaTeX ..."
122
 
126
 
123
  for f in ${files}; do
127
  for f in ${files}; do
124
    echo ${f}
128
    ${echo} ${f}
125
    ${R_CMD} Rdconv -t latex ${f} >> ${out}
129
    ${R_CMD} Rdconv -t latex ${f} >> ${out}
126
  done
130
  done
127
 
131
 
128
}
132
}
129
 
133
 
130
Rd_DESCRIPTION_to_LaTeX () {
134
Rd_DESCRIPTION_to_LaTeX () {
131
  ## Typeset the contents of a DESCRIPTION file in a LaTeX description
135
  ## Typeset the contents of a DESCRIPTION file in a LaTeX description
132
  ## list.
136
  ## list.
133
  ## Usage:
137
  ## Usage:
134
  ##   Rd_DESCRIPTION_to_LaTeX FILE
138
  ##   Rd_DESCRIPTION_to_LaTeX FILE
-
 
139
  
135
  fields=`sed '/^[ 	]/d; s/^\([^:]*\):.*$/\1/' $1`
140
  fields=`sed '/^[ 	]/d; s/^\([^:]*\):.*$/\1/' $1`
136
  echo "\\begin{description}"
141
  ${echo} "\\begin{description}"
137
  echo "\\raggedright{}"
142
  ${echo} "\\raggedright{}"
138
  for f in `echo "${fields}" | sed '/Package/d; /Bundle/d;'`; do
143
  for f in `${echo} "${fields}" | sed '/Package/d; /Bundle/d;'`; do
139
    text=`get_dcf_field ${f} ${1}`
144
    text=`get_dcf_field ${f} ${1}`
140
    echo "\\item[${f}] \\AsIs{${text}}"
145
    ${echo} "\\item[${f}] \\AsIs{${text}}"
141
  done
146
  done
142
  echo "\\end{description}"
147
  ${echo} "\\end{description}"
143
}
148
}
144
 
149
 
145
is_bundle=no
150
is_bundle=no
146
is_base_package=no
151
is_base_package=no
147
file_sed='s/[_$]/\\&/g'
152
file_sed='s/[_$]/\\&/g'
Line 172... Line 177...
172
    if test -d ${1}/man; then
177
    if test -d ${1}/man; then
173
      dir=${1}/man
178
      dir=${1}/man
174
    else
179
    else
175
      dir=${1}
180
      dir=${1}
176
    fi
181
    fi
177
    subj="all in \\file{`echo ${dir} | sed ${file_sed}`}"
182
    subj0=`${echo} ${dir} | sed -e ${file_sed}`
-
 
183
    subj="all in \\file{${subj0}}"
178
  fi
184
  fi
179
else
185
else
180
  if test ${#} -gt 1 ; then
186
  if test ${#} -gt 1 ; then
181
    subj=" etc.";
187
    subj=" etc.";
182
  else
188
  else
183
    subj=
189
    subj=
184
    toc=
190
    toc=
185
  fi
191
  fi
186
  subj="\\file{`echo ${1} | sed ${file_sed}`}${subj}"
192
  subj0=`${echo} ${1} | sed -e ${file_sed}`
-
 
193
  subj="\\file{${subj0}}${subj}"
187
fi
194
fi
188
title=${title-"\\R{} documentation}} \\par\\bigskip{{\\Large of ${subj}"}
195
title=${title-"\\R{} documentation}} \\par\\bigskip{{\\Large of ${subj}"}
189
 
196
 
190
## Prepare for building the documentation.
197
## Prepare for building the documentation.
191
if test -f ${output}; then
198
if test -f ${output}; then
192
  echo "file \`${output}' exists; please remove first"
199
  ${echo} "file \`${output}' exists; please remove first"
193
  exit 1
200
  exit 1
194
fi
201
fi
195
build_dir=.Rd2dvi${$}
202
build_dir=.Rd2dvi${$}
196
if test -d ${build_dir}; then
203
if test -d ${build_dir}; then
197
  rm -rf ${build_dir} || echo "cannot write to build dir" && exit 2
204
  rm -rf ${build_dir} || echo "cannot write to build dir" && exit 2
Line 204... Line 211...
204
\\usepackage[${R_RD4DVI-ae}]{Rd}
211
\\usepackage[${R_RD4DVI-ae}]{Rd}
205
\\usepackage{makeidx}
212
\\usepackage{makeidx}
206
\\makeindex{}
213
\\makeindex{}
207
\\begin{document}
214
\\begin{document}
208
EOF
215
EOF
209
if test ${is_bundle} = no; then
216
if test "${is_bundle}" = no; then
210
  cat >> ${build_dir}/Rd2.tex <<EOF
217
  cat >> ${build_dir}/Rd2.tex <<EOF
211
\\chapter*{}
218
\\chapter*{}
212
\\begin{center}
219
\\begin{center}
213
{\\textbf{\\huge ${title}}}
220
{\\textbf{\\huge ${title}}}
214
\\par\\bigskip{\\large \\today}
221
\\par\\bigskip{\\large \\today}
215
\\end{center}
222
\\end{center}
216
EOF
223
EOF
217
  if test -f ${1}/DESCRIPTION; then
224
  if test -f ${1}/DESCRIPTION; then
218
    Rd_DESCRIPTION_to_LaTeX ${1}/DESCRIPTION >> ${build_dir}/Rd2.tex
225
    Rd_DESCRIPTION_to_LaTeX ${1}/DESCRIPTION >> ${build_dir}/Rd2.tex
219
  fi
226
  fi
220
  if test ${is_base_package} = yes; then
227
  if test "${is_base_package}" = yes; then
221
    R_version=unknown
228
    R_version=unknown
222
    if test -f ${1}/../../../VERSION; then
229
    if test -f ${1}/../../../VERSION; then
223
      R_version=`cat ${1}/../../../VERSION`
230
      R_version=`cat ${1}/../../../VERSION`
224
    fi
231
    fi
225
    echo "`pwd`: ${1} ${R_version}"
-
 
226
    Rd_DESCRIPTION_to_LaTeX ${1}/DESCRIPTION.in | \
232
    Rd_DESCRIPTION_to_LaTeX ${1}/DESCRIPTION.in | \
227
      sed "s/@VERSION@/${R_version}/" >> ${build_dir}/Rd2.tex
233
      sed "s/@VERSION@/${R_version}/" >> ${build_dir}/Rd2.tex
228
  fi
234
  fi
229
else
235
else
230
  cat >> ${build_dir}/Rd2.tex <<EOF
236
  cat >> ${build_dir}/Rd2.tex <<EOF
Line 243... Line 249...
243
\\end{titlepage}
249
\\end{titlepage}
244
EOF
250
EOF
245
fi
251
fi
246
  
252
  
247
## Rd2.tex part 2: body
253
## Rd2.tex part 2: body
248
if test ${is_bundle} = no; then
254
if test "${is_bundle}" = no; then
249
  echo ${toc} >> ${build_dir}/Rd2.tex
255
  ${echo} ${toc} >> ${build_dir}/Rd2.tex
250
  Rdconv_dir_or_files_to_LaTeX ${build_dir}/Rd2.tex ${dir-${@}}
256
  Rdconv_dir_or_files_to_LaTeX ${build_dir}/Rd2.tex ${dir-${@}}
251
else
257
else
252
  cat >> ${build_dir}/Rd2.tex <<EOF
258
  cat >> ${build_dir}/Rd2.tex <<EOF
253
\\pagenumbering{roman}
259
\\pagenumbering{roman}
254
\\tableofcontents{}
260
\\tableofcontents{}
255
\\cleardoublepage{}
261
\\cleardoublepage{}
256
\\pagenumbering{arabic}
262
\\pagenumbering{arabic}
257
EOF
263
EOF
258
  for p in ${bundle_pkgs}; do
264
  for p in ${bundle_pkgs}; do
259
    echo "Bundle package: \`${p}'"
265
    ${echo} "Bundle package: \`${p}'"
260
    echo "\\chapter{Package \`${p}'}" >> ${build_dir}/Rd2.tex
266
    ${echo} "\\chapter{Package \`${p}'}" >> ${build_dir}/Rd2.tex
261
    if test -f ${1}/${p}/DESCRIPTION.in; then
267
    if test -f ${1}/${p}/DESCRIPTION.in; then
262
      Rd_DESCRIPTION_to_LaTeX ${1}/${p}/DESCRIPTION.in \
268
      Rd_DESCRIPTION_to_LaTeX ${1}/${p}/DESCRIPTION.in \
263
        >> ${build_dir}/Rd2.tex
269
        >> ${build_dir}/Rd2.tex
264
    fi
270
    fi
265
    Rdconv_dir_or_files_to_LaTeX ${build_dir}/Rd2.tex ${1}/${p}/man
271
    Rdconv_dir_or_files_to_LaTeX ${build_dir}/Rd2.tex ${1}/${p}/man
266
    echo "\\clearpage{}" >> ${build_dir}/Rd2.tex
272
    ${echo} "\\clearpage{}" >> ${build_dir}/Rd2.tex
267
  done
273
  done
268
  echo "\\cleardoublepage{}" >> ${build_dir}/Rd2.tex
274
  ${echo} "\\cleardoublepage{}" >> ${build_dir}/Rd2.tex
269
fi
275
fi
270
 
276
 
271
## Rd2.tex part 3: footer
277
## Rd2.tex part 3: footer
272
cat >> ${build_dir}/Rd2.tex <<EOF
278
cat >> ${build_dir}/Rd2.tex <<EOF
273
\\printindex{}
279
\\printindex{}
Line 277... Line 283...
277
echo "Creating ${out_ext} output from LaTeX ..."
283
echo "Creating ${out_ext} output from LaTeX ..."
278
cd ${build_dir}
284
cd ${build_dir}
279
${R_LATEXCMD-latex} Rd2
285
${R_LATEXCMD-latex} Rd2
280
${R_MAKEINDEXCMD-makeindex} Rd2
286
${R_MAKEINDEXCMD-makeindex} Rd2
281
${R_LATEXCMD-latex} Rd2
287
${R_LATEXCMD-latex} Rd2
282
if test ${out_ext} = pdf; then
288
if test "${out_ext}" = pdf; then
283
  ${R_LATEXCMD-latex} Rd2
289
  ${R_LATEXCMD-latex} Rd2
284
fi
290
fi
285
cd ${start_dir}
291
cd ${start_dir}
286
cp ${build_dir}/Rd2.${out_ext} ${output}
292
cp ${build_dir}/Rd2.${out_ext} ${output}
287
echo "Done"
293
echo "Done"
288
 
294
 
289
if ${clean}; then
295
if ${clean}; then
290
  rm -rf ${build_dir}
296
  rm -rf ${build_dir}
291
else
297
else
292
  echo "You may want to clean up by \`rm -rf ${build_dir}'"
298
  ${echo} "You may want to clean up by \`rm -rf ${build_dir}'"
293
fi
299
fi
294
${preview} ${output}
300
${preview} ${output}
295
exit 0
301
exit 0
296
 
302
 
297
### Local Variables: ***
303
### Local Variables: ***