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

321translate 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.