]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/contributor/doc-work.itexi
Doc: how to update committishes of .texidoc files at once (issue 3485)
[lilypond.git] / Documentation / contributor / doc-work.itexi
index d56e4ec88f97ae399a0a0f3f65ca90a3618c8e38..bd7a4aa317e9b8082044abcbd00347b688bd498a 100644 (file)
@@ -84,11 +84,17 @@ Please write exact changes to the text.
 
 @item
 A formal patch to the source code is @emph{not} required; we can
-take care of the technical details.  Here is an example of a
-perfect documentation report:
+take care of the technical details.
+
+@item
+Send the suggestions to the @code{bug-lilypond} mailing list as
+discussed in @rweb{Contact}.
+
+@item
+Here is an example of a perfect documentation report:
 
 @verbatim
-To: lilypond-devel@gnu.org
+To: bug-lilypond@gnu.org
 From: helpful-user@example.net
 Subject: doc addition
 
@@ -140,20 +146,42 @@ Please prepare a formal git patch.
 
 @end enumerate
 
+@subheading Contributions that contain examples using overrides
+
+Examples that use overrides, tweaks, customer Scheme functions etc. are
+(with very few exceptions) not included in the main text of the manuals;
+as there would be far too many, equally useful, candidates.
+
+The correct way is to submit your example, with appropriate explanatory
+text and tags, to the LilyPond Snippet Repository (LSR).  Snippets that
+have the @qq{docs} tag can then be easily added as a
+@emph{selected snippet} in the documentation.  It will also appear
+automatically in the Snippets lists.  See @ref{Introduction to LSR}.
+
+Snippets that @emph{don't} have the @qq{docs} tage will still be
+searchable and viewable within the LSR, but will be not be included in
+the Snippets list or be able to be included as part of the main
+documentation.
+
+Generally, any new snippets that have the @qq{docs} tag are more
+carefully checked for syntax and formatting.
+
+@subheading Announcing your snippet
+
 Once you have followed these guidelines, please send a message to
 lilypond-devel with your documentation submissions.  Unfortunately
-there is a strict “no top-posting” check on the mailing list; to avoid
+there is a strict @q{no top-posting} check on the mailing list; to avoid
 this, add:
 
-> I'm not top posting.
+@code{> I'm not top posting}
+
+(you must include the > ) to the top of your documentation addition.
 
-(you must include the > ) to the top of your documentation
-addition.
+We may edit your suggestion for spelling, grammar, or style, and we may
+not place the material exactly where you suggested, but if you give us
+some material to work with, we can improve the manual much faster.
 
-We may edit your suggestion for spelling, grammar, or style, and
-we may not place the material exactly where you suggested, but if
-you give us some material to work with, we can improve the manual
-much faster.  Thanks for your interest!
+Thanks for your interest!
 
 
 @node Texinfo introduction and usage policy
@@ -215,15 +243,33 @@ how to modify the snippet files and SL, see @ref{LSR work}.
 @node Sectioning commands
 @subsection Sectioning commands
 
-Most of the manual operates at the
+The Notation Reference uses section headings at four, occasionally
+five, levels.
+
+@itemize
+
+@item Level 1: @@chapter
+@item Level 2: @@section
+@item Level 3: @@subsection
+@item Level 4: @@unnumberedsubsubsec
+@item Level 5: @@subsubsubheading
+@end itemize
+
+The first three levels are numbered in html, the last two are not.
+Numbered sections correspond to a single html page in the split html
+documents.
+
+The first four levels always have accompanying nodes so they can be
+referenced and are also included in the ToC in html.
+
+Most of the manual is written at level 4 under headings created with
 
 @example
 @@node Foo
-@@subsubsection Foo
+@@unnumberedsubsubsec Foo
 @end example
 
-@noindent
-level.  Sections are created with
+Level 3 subsections are created with
 
 @example
 @@node Foo
@@ -250,11 +296,17 @@ but instead:
 @end example
 
 @item
-If a heading is desired without creating a @code{@@node}, please use
-the following:
+With the exception of @code{@@} commands, the section name must
+match the node name exactly.
+
+@item
+No commas may be used in the node names.
+
+@item
+If a heading is desired without creating a @code{@@node}, please use:
 
 @example
-@@subheading Foo
+@@subsubsubheading Foo
 @end example
 
 @item
@@ -283,6 +335,90 @@ construct.  These are easily constructed with automatic tools; see
 
 @itemize
 
+@item
+Most LilyPond examples throughout the documentation can be produced
+with:
+
+@example
+@@lilypond[verbatim,quote,relative=1]
+@end example
+
+or
+
+@example
+@@lilypond[verbatim,quote,relative=2]
+@end example
+
+If using any combination of @code{\header@{@}}, @code{\score@{@}} or
+@code{\layout@{@}} in your example, then you must omit the
+@code{relative} variable and either use absolute entry mode or an
+explicit @code{\relative@{@}} construction.
+
+If using @code{\book@{@}} in your example then you must also omit the
+@code{relative} variable and either use absolute entry mode or an
+explicit @code{\relative@{@}} construction.  However, you must also
+include the @code{papersize=X} variable, where @code{X} is a defined
+paper size from within @file{scm/paper.scm}.  This is to avoid the
+default @code{a4} paper size being used and leaving too much unnecessary
+whitespace and potentially awkward page breaks in the PDFs.
+
+The preferred @code{papersize}s are @code{a5}, @code{a6} or
+@code{a8landscape}.
+
+@code{a8landscape} works best for a single measure with a single title
+and/or single @code{tagline}:
+
+@example
+@@lilypond[papersize=a8landscape,verbatim]
+\book @{
+  \header @{
+    title = "A scale in LilyPond"
+  @}
+  \relative @{
+    c d e f
+  @}
+@}
+@@end lilypond
+@end example
+
+and can also be used to easily show features that require page breaks
+(i.e. page numbers) without taking large amounts of space within the
+documentation.  Do not use the @code{quote} option with this paper size.
+
+@code{a5} or @code{a6} paper sizes are best used for examples that have
+more than two measures of music or require multiple staves (i.e. to
+illustrate cross-staff features, RH and LH parts etc.) and where
+@code{\book@{@}} constructions are required or where @code{a8landscape}
+produces an example that is too cramped.  Depending on the example the
+@code{quote} option may need to be omitted.
+
+In rare cases, other options may be used (or omitted), but ask first.
+
+@item
+Please avoid using extra spacing either after or within the
+@code{@@lilypond} parameters.
+
+@example
+not:          @@lilypond [verbatim, quote, relative=1]
+but instead:  @@lilypond[verbatim,quote,relative=1]
+@end example
+
+@item
+Inspirational headwords are produced with:
+
+@example
+@@lilypondfile[quote,ragged-right,line-width=16\cm,staffsize=16]
+@{pitches-headword.ly@}
+@end example
+
+@item
+LSR snippets are linked with:
+
+@example
+@@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
+@{filename.ly@}
+@end example
+
 @item
 Use two spaces for indentation in lilypond examples (no tabs).
 
@@ -326,52 +462,6 @@ but instead:  \override TextScript #'padding = #3
               c1^"hi"
 @end example
 
-@item
-Most LilyPond input should be produced with:
-
-@example
-@@lilypond[verbatim,quote,relative=2]
-@end example
-
-@noindent
-or
-
-@example
-@@lilypond[verbatim,quote,relative=1]
-@end example
-
-Please avoid using extra spacing either after or within the
-@code{@@lilypond} parameters.
-
-@example
-not:          @@lilypond [verbatim, quote, relative=1]
-but instead:  @@lilypond[verbatim,quote,relative=1]
-@end example
-
-If you want to use @code{\layout@{@}} or define variables, use
-
-@example
-@@lilypond[verbatim,quote]
-@end example
-
-In rare cases, other options may be used (or omitted), but ask first.
-
-@item
-Inspirational headwords are produced with
-
-@example
-@@lilypondfile[quote,ragged-right,line-width=16\cm,staffsize=16]
-@{pitches-headword.ly@}
-@end example
-
-@item
-LSR snippets are linked with
-
-@example
-@@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-@{filename.ly@}
-@end example
-
 @noindent
 excepted in Templates, where `doctitle' may be omitted.
 
@@ -452,8 +542,6 @@ easier/faster processing), use this header:
 \paper @{
   indent = 0\mm
   line-width = 160\mm - 2.0 * 0.4\in
-  ragged-right = ##t
-  force-assignment = #""
   line-width = #(- line-width (* mm  3.000000))
 @}
 
@@ -1058,6 +1146,9 @@ Notation Reference:
 Application Usage:
 @@rprogram@{blah@}.
 
+Essay on automated music engraving:
+@@ressay@{yadda@}.
+
 Extending LilyPond:
 @@rextend@{frob@}.
 
@@ -1364,24 +1455,7 @@ In order to save build time, a script is available to build only
 one section of the documentation in English with a default html
 appearance.
 
-The script is available as:
-
-@example
-scripts/auxiliar/doc-section.sh
-@end example
-
-This script will require customization for your site if your
-LilyPond git repository is anyplace but @code{$HOME/lilypond}.
-
-Assuming that no customization is required, you can setup the
-single section build with:
-
-@example
-mkdir $HOME/lilypond/tempdocs
-cp $HOME/lilypond/Documentation/out/version.itexi $HOME/lilypond/tempdocs
-@end example
-
-You can then build a section of the documentation with:
+You can build a section of the documentation with:
 
 @example
 scripts/auxiliar/doc-section.sh MANUAL SECTION
@@ -1397,6 +1471,25 @@ Notation Reference, use the command:
 scripts/auxiliar/doc-section.sh notation pitches
 @end example
 
+You can then see the generated document for the section at
+
+@example
+tempdocs/pitches/out/pitches.html
+@end example
+
+According to
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1236,Lilypond issue 1236},
+the location of the lilypond git tree is taken from @code{$LILYPOND_GIT}
+if specified, otherwise it is auto-detected.
+
+It is assumed that compilation takes place in the @file{build/}
+subdirectory, but this can be overridden by setting the environment
+variable @code{LILYPOND_BUILD_DIR}.
+
+Similarly, output defaults to @file{build/tempdocs/} but this can be
+overridden by setting the environment variable
+@code{LILYPOND_TEMPDOCS}.
+
 This script will not work for building sections of the
 Contributors' guide.  For building sections of the Contributors'
 Guide, use:
@@ -1414,8 +1507,8 @@ use:
 scripts/auxiliar/cg-section.sh doc-work
 @end example
 
-Like @code{doc-section.sh}, @code{cg-section.sh} may need to be customized
-for your installation.
+@code{cg-section.sh} uses the same environment variables and
+corresponding default values as @code{doc-section.sh}.
 
 @subheading Stripping whitespace and generating menus
 
@@ -1488,7 +1581,7 @@ take some time before your request or contribution is handled.
 @node Getting started with documentation translation
 @subsection Getting started with documentation translation
 
-First, get the sources of branch @code{lilypond/translation} from the
+First, get the sources of branch @code{translation} from the
 Git repository, see @ref{Starting with Git}.
 
 @menu
@@ -1750,11 +1843,6 @@ Spanish translation blah
 "
 @end example
 
-@noindent
-Then, you should get these translated strings into compiled snippets in
-@file{Documentation/snippets}, see @q{General guidelines} in @ref{Adding
-and editing snippets}.
-
 @code{@@example} blocks need not be verbatim copies, e.g. variable
 names, file names and comments should be translated.
 
@@ -1949,11 +2037,6 @@ the changes it made with @command{git diff} before committing; if you
 don't do so, some @code{@@lilypond} snippets might be broken or make
 no sense in their context.
 
-When you have updated texidocs in
-@file{Documentation/@var{MY-LANGUAGE}/texidocs}, you can get these
-changes into compiled snippets in @file{Documentation/snippets}, see
-@q{General guidelines} in @ref{Adding and editing snippets}.
-
 Finally, a command runs the three update processes above for all
 enabled languages (from @file{Documentation/}):
 
@@ -1988,27 +2071,21 @@ by doing
 git rev-list HEAD |head -1
 @end example
 
-A special case is updating Snippet documentation strings in
-@file{Documentation/@var{MY-LANGUAGE}/texidocs}.  For these to be
-correctly marked as up-to-date, first run @code{makelsr.py} as
-explained in @ref{Adding and editing snippets}, and commit the
-resulting compiled snippets left in @file{Documentation/snippets/}.
-Say the SHA1 ID code of this commit is <C>.  Now edit again your
-translated files in @file{Documentation/@var{MY-LANGUAGE}/texidocs}
-adjusting the 40-digit committish that appears in the text to be <C>;
-finally, commit these updated files.  Not doing so would result in
-changes made both to your updates and original snippets to
-persistently appear in the check-translation output as if they were
-out of sync.
-
-This two-phase mechanism avoids the (practically) unsolvable problem
-of guessing what committish will have our update, and pretending to
-put this very committish on the files in the same commit.
-
 @c http://lists.gnu.org/archive/html/lilypond-devel/2009-01/msg00245.html
 @c contains a helper script which could be used to perform massive
 @c committish updates.
 
+Most of the changes in the LSR snippets included in the documentation concern
+the syntax, not the description inside @code{texidoc=""}.  This implies that
+quite often you will have to update only the committish of the matching
+.texidoc file.  This can be a tedious work if there are many snippets to be
+marked as up do date.  You can use the following command to update the
+committishes at once:
+
+@example
+cd Documentation/LANG/texidocs
+sed -i -r 's/[0-9a-z]@{40@}/NEW-COMMITTISH/' *.texidoc
+@end example
 
 @seealso
 @ref{LSR work}.
@@ -2116,7 +2193,9 @@ useful) and paste with @key{C-y} or @key{C-v}.
 
 @item Update sections finished in the English documentation; check
 sections status at
+@smallexample
 @uref{http://lilypondwiki.tuxfamily.org/index.php?title=Documentation_coordination}.
+@end smallexample
 
 @item Update documentation PO.  It is recommended not to update
 strings which come from documentation that is currently deeply revised
@@ -2178,31 +2257,44 @@ This policy explains how to manage Git branches and commit
 translations to Git.
 
 @itemize
-@item Translation changes matching master branch are preferably made on
-@code{lilypond/translation} branch; they may be pushed directly to
-@code{master} only if they do not break compilation of LilyPond and
-its documentation, and in this case they should be pushed to
-@code{lilypond/translation} too.  Similarly, changes matching
+@item Translation work is made on
+@code{translation} branch.  This branch is merged on
+@code{staging} once a week, approximately.  Then,
+@code{master} branch is merged on
+@code{translation}, where the check-translation script (see
+@ref{Check state of translation}) shows changes in English docs which
+should be translated, and the cycle starts again.
+
+@item Translations may be pushed directly to
+@code{staging} only if they do not break compilation of LilyPond and
+its documentation.  Those changes could be pushed to
+@code{translation} too, or alternatively translators could wait until
+they come from
+@code{master} the next time it is merged on
+@code{translation}.  Similarly, changes matching
 @code{stable/X.Y} are preferably made on
-@code{lilypond/X.Ytranslation}.
+@code{X.Ytranslation}.
 
-@item @code{lilypond/translation} Git branch may be merged into
-master only if LilyPond (@command{make all}) and documentation
-(@command{make doc}) compile successfully.
+@item @code{translation} Git branch may be merged into
+@code{staging} branch only if LilyPond (@command{make all}) and
+documentation (@command{make doc}) compile successfully.
 
-@item @code{master} Git branch may be merged into
-@code{lilypond/translation} whenever @command{make} and @command{make
-doc} are successful (in order to ease documentation compilation by
-translators), or when significant changes had been made in
-documentation in English in master branch.
+@item @command{make} and @command{make doc} are usually successful in
+@code{master} Git branch because those tests should have already
+succeeded in
+@code{staging} branch before merging.
+@code{master} branch may be merged into
+@code{translation} when significant changes had been made in
+documentation in English in
+@code{master} branch.
 
 @item General maintenance may be done by anybody who knows what he does
 in documentation in all languages, without informing translators
 first.  General maintenance include simple text substitutions
 (e.g. automated by sed), compilation fixes, updating Texinfo or
 lilypond-book commands, updating macros, updating ly code, fixing
-cross-references, and operations described in @ref{Maintaining
-without updating translations}.
+cross-references, and operations described in
+@ref{Maintaining without updating translations}.
 @end itemize