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}";

325translate adname parameters to adinternalusename parameters 325  (330)
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 308.

Uses escapeForHyperref 327, escapeForMakeindexKey 328b, escapeForMakeindexText  328a, and escapeForTTLatex 329.