summaryrefslogtreecommitdiff
path: root/www/www.org
blob: 1b0a362091c582b05172a355c878a55a6e001033 (about) (plain)
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
#+STARTUP: showall

* [[https://orgmode.org/manual/Publishing.html][Publishing]]

Org includes a publishing management system that allows you to configure
automatic HTML conversion of /projects/ composed of interlinked Org files. You
can also configure Org to automatically upload your exported HTML pages and
related attachments, such as images and source code files, to a web server.

You can also use Org to convert files into PDF, or even combine HTML and PDF
conversion so that files are available in both formats on the server.

Publishing has been contributed to Org by David O’Toole.

** [[https://orgmode.org/manual/Configuration.html][Configuration]]

Publishing needs significant configuration to specify files, destination and
many other properties of a project.

*** [[https://orgmode.org/manual/Project-alist.html][The variable =org-publish-project-alist=]]

Publishing is configured almost entirely through setting the value of one
variable, called =org-publish-project-alist=. Each element of the list
configures one project, and may be in one of the two following forms:

#+BEGIN_EXAMPLE
  ( "project-name" :property value :property value ... )
#+END_EXAMPLE

i.e., a well-formed property list with alternating keys and values, or:

#+BEGIN_EXAMPLE
  ( "project-name" :components ( "project-name" "project-name" ... ) )
#+END_EXAMPLE

In both cases, projects are configured by specifying property values. A project
defines the set of files that are to be published, as well as the publishing
configuration to use when publishing those files. When a project takes the
second form listed above, the individual members of the =:components= property
are taken to be sub-projects, which group together files requiring different
publishing options. When you publish such a “meta-project”, all the components
are also published, in the sequence given.

#+NAME: build-site
#+BEGIN_SRC elisp :tangle build-site.el
  ;; -*- lexical-binding: t; -*-

  ( require 'ox-publish )

  ( defun publication-builder ()
    ( let ( ( report-success "Build complete!" ) )
      ( lambda ()
        ( message report-success )
        ( ) ) ) )

  ( defvar publish ( publication-builder ) )

  ( funcall publish )
#+END_SRC

* EOF