<?xml version="1.0" encoding="UTF-8"?>
<chapter version="5.1" xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         xmlns:trans="http://docbook.org/ns/transclusion"
         xmlns:svg="http://www.w3.org/2000/svg"
         xmlns:m="http://www.w3.org/1998/Math/MathML"
         xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns:db="http://docbook.org/ns/docbook">
  <title>Latex API</title>

  <section>
    <title>Latex Parameters: 'latex_registered_subjects'</title>

    <synopsis>SYNTAX:
**latex_registered_subjects**(//parameter//, //decision//)</synopsis>

    <itemizedlist>
      <listitem>
        <para><emphasis>parameter</emphasis> Name of particular latex
        parameter</para>
      </listitem>

      <listitem>
        <para><emphasis>decision</emphasis> Possible parameter's value</para>
      </listitem>
    </itemizedlist>

    <para>Table to declare latex parameters along with all possible parameter
    values - decisions.</para>
  </section>

  <section>
    <title>Block's Demand: 'latex_scope_demand'</title>

    <synopsis>SYNTAX:
**latex_scope_demand**(//scope-ref//, //parameter//)</synopsis>

    <para>Declares demand for a given scope specified by
    <emphasis>scope-ref</emphasis>. It initiates latex reasoning in order to
    find satisfying decision for each demand.</para>
  </section>

  <section>
    <title>Function's Demand: 'latex_fn_demand',
    'latex_fn_demand_ordered'</title>

    <synopsis>SYNTAX:
**latex_fn_demand**(//fn-ref//, //parameter//)                    (1)
**latex_fn_demand_ordered**(//fn-ref//, //parameter//, //id//)    (2)</synopsis>

    <itemizedlist>
      <listitem>
        <para><emphasis>fn-ref</emphasis> function reference</para>
      </listitem>

      <listitem>
        <para><emphasis>parameter</emphasis> latex parameter</para>
      </listitem>

      <listitem>
        <para><emphasis>id</emphasis> number of the parameter in function
        signature's arguments list</para>
      </listitem>
    </itemizedlist>

    <para>Latex reasoning determines which functions require additional
    parameters during runtime. Table (2) holds the same data as (1) along with
    additional field <emphasis>id</emphasis> to specify exact order of latex
    parameters in the given function's signature.</para>
  </section>

  <section>
    <title>Decisions: 'latex_decision', 'late(latex_decision)'</title>

    <synopsis>SYNTAX:
**latex_decision**(//scope-ref//, //parameter//, //decision//);</synopsis>

    <itemizedlist>
      <listitem>
        <para><emphasis>scope-ref</emphasis> code block reference</para>
      </listitem>

      <listitem>
        <para><emphasis>parameter</emphasis> latex parameter</para>
      </listitem>

      <listitem>
        <para><emphasis>decision</emphasis> latex decision</para>
      </listitem>
    </itemizedlist>

    <para>Latex reasoning stores its output, found decisions, in this table.
    Field <emphasis>decision</emphasis> specifies value of a latex parameter
    <emphasis>parameter</emphasis> in a given code block denoted by
    <emphasis>scope-ref</emphasis>. If some demand can't be satisfied and no
    appropriate decision is found, compiler raises an error. Latex parameter
    can have different values in different code blocks, thus
    <emphasis>scope-ref</emphasis> is used as a guard.</para>
  </section>
</chapter>
