26.6 Translate ∖adname and ∖addefinename Parameters

aldordoc provides a simple user interface for the reference to functions in text, see description of ∖adname. A LATEX implementation for ∖adname is not provided. Rather the following functions translate the ∖adname markup into a LATEX command ∖adinternalusename with appropriate parameters.

The following function takes an argument of the form

FUNC: SIGNATURE

as it is given to the ∖adname command. It returns all the arguments that are needed for the commands ∖addefinename and ∖adinternalusename.

The signature is extracted (if given), but it is copied verbatim, i. e., no escaping is done for it. The other return values can be directly handed over to the ∖addefinename and ∖adinternalusename commands. In fact, if a variable type is given, the output should be used as follows.

($indexkey, $indextext,  
 $hyperlabelname, $hyperlabelsignature,  
 $latextext, $signature) = &splitNameAndSignatureArgument($nameAndSignature);  
print "\\adinternaldefinename[$type]"  
    . "{$indexkey}{$indextext}"  
    . "{$hyperlabelname}{$hyperlabelsignature}"  
    . "{$latextext}";  
print "\\adinternalusename[$type]"  
    . "{$indexkey}{$indextext}"  
    . "{$hyperlabelname}{$hyperlabelsignature}"  
    . "{$latextext}";

321⟨translate adname parameters to adinternalusename parameters 321⟩≡   (326)
sub splitNameAndSignatureArgument {
    my($nameAndSignature)=@_;
    my($name);
    my($indexkey, $indextext);
    my($hyperlabelname, $hyperlabelsignature);
    my($latextext, $signature);
    if ($nameAndSignature =~ /\s*(.*?)\s*:\s*(.*)\s*/) {
        $name=$1;
        $signature=$2;
    } else {
        $name=$nameAndSignature;
        $signature=’’;
    }
    $indexkey            = &escapeForMakeindexKey($name);
    $indextext           = &escapeForMakeindexText($name);
    $hyperlabelname      = &escapeForHyperref($name);
    $hyperlabelsignature = &escapeForHyperref($signature);
    $latextext           = &escapeForTTLatex($name);
    ($indexkey, $indextext,
     $hyperlabelname, $hyperlabelsignature,
     $latextext, $signature);
}

Defines:
splitNameAndSignatureArgument, used in chunk 304.

Uses escapeForHyperref 323, escapeForMakeindexKey 324b, escapeForMakeindexText  324a, and escapeForTTLatex 325.