'Add Authors to the basic NCX file.
Generate the Authors NCX content, add to self.ncx_soup.
Inputs:
authors (list)
Updated:
play_order (int)
Outputs:
ncx_soup (file): updated'

def generate_ncx_by_author(self, tocTitle):

    self.update_progress_full_step(_('NCX    for    Authors'))
    def _add_to_author_list(current_author_list, current_letter):
        current_author_list = '    &bull;    '.join(current_author_list)
        current_author_list = self.format_ncx_text(current_author_list, dest='description')
        master_author_list.append((current_author_list, current_letter))
    ncx_soup = self.ncx_soup
    HTML_file = 'content/ByAlphaAuthor.html'
    if self.generate_for_kindle_mobi:
        body = ncx_soup.find('navPoint')
    else:
        body = ncx_soup.find('navMap')
    btc = len(body.contents)
    navPointTag = Tag(ncx_soup, 'navPoint')
    if self.generate_for_kindle_mobi:
        navPointTag['class'] = 'section'
    file_ID = ('%s' % tocTitle.lower())
    file_ID = file_ID.replace('    ', '')
    navPointTag['id'] = ('%s-ID' % file_ID)
    navPointTag['playOrder'] = self.play_order
    self.play_order += 1
    navLabelTag = Tag(ncx_soup, 'navLabel')
    textTag = Tag(ncx_soup, 'text')
    section_header = ('%s    [%d]' % (tocTitle, len(self.individual_authors)))
    if self.generate_for_kindle_mobi:
        section_header = tocTitle
    textTag.insert(0, NavigableString(section_header))
    navLabelTag.insert(0, textTag)
    nptc = 0
    navPointTag.insert(nptc, navLabelTag)
    nptc += 1
    contentTag = Tag(ncx_soup, 'content')
    contentTag['src'] = ('%s#section_start' % HTML_file)
    navPointTag.insert(nptc, contentTag)
    nptc += 1
    sort_equivalents = self.establish_equivalencies([x[1] for x in self.authors])
    master_author_list = []
    current_letter = self.letter_or_symbol(sort_equivalents[0])
    current_author_list = []
    for (idx, author) in enumerate(self.authors):
        if (self.letter_or_symbol(sort_equivalents[idx]) != current_letter):
            _add_to_author_list(current_author_list, current_letter)
            current_letter = self.letter_or_symbol(sort_equivalents[idx])
            current_author_list = [author[0]]
        elif (len(current_author_list) < self.opts.description_clip):
            current_author_list.append(author[0])
    _add_to_author_list(current_author_list, current_letter)
    for authors_by_letter in master_author_list:
        navPointByLetterTag = Tag(ncx_soup, 'navPoint')
        if self.generate_for_kindle_mobi:
            navPointByLetterTag['class'] = 'article'
        navPointByLetterTag['id'] = ('%sauthors-ID' % authors_by_letter[1])
        navPointTag['playOrder'] = self.play_order
        self.play_order += 1
        navLabelTag = Tag(ncx_soup, 'navLabel')
        textTag = Tag(ncx_soup, 'text')
        if (authors_by_letter[1] == self.SYMBOLS):
            fmt_string = _(u'Authors    beginning    with    %s')
        else:
            fmt_string = _(u"Authors    beginning    with    '%s'")
        textTag.insert(0, NavigableString((fmt_string % authors_by_letter[1])))
        navLabelTag.insert(0, textTag)
        navPointByLetterTag.insert(0, navLabelTag)
        contentTag = Tag(ncx_soup, 'content')
        if (authors_by_letter[1] == self.SYMBOLS):
            contentTag['src'] = ('%s#%s_authors' % (HTML_file, authors_by_letter[1]))
        else:
            contentTag['src'] = ('%s#%s_authors' % (HTML_file, self.generate_unicode_name(authors_by_letter[1])))
        navPointByLetterTag.insert(1, contentTag)
        if self.generate_for_kindle_mobi:
            cmTag = Tag(ncx_soup, ('%s' % 'calibre:meta'))
            cmTag['name'] = 'description'
            cmTag.insert(0, NavigableString(authors_by_letter[0]))
            navPointByLetterTag.insert(2, cmTag)
        navPointTag.insert(nptc, navPointByLetterTag)
        nptc += 1
    body.insert(btc, navPointTag)
    btc += 1
    self.ncx_soup = ncx_soup
