comparison Doc/texinputs/python.sty @ 15360:74e1d79520fd legacy-trunk

Avoid using \withsubitem and \ttindex internally; they have not proven to be very robust. Using \index directly fixes a lot of entries in the index that had to be specifically read to determine that they had the wrong parenthesized description.
author Fred Drake <fdrake@acm.org>
date Sun, 29 Oct 2000 05:19:16 +0000
parents 5d2a2185c651
children 9a17cdcd3320
comparison
equal deleted inserted replaced
15359:12b92a35641b 15360:74e1d79520fd
218 \newcommand{\kwindex}[1]{\indexii{keyword}{#1@{\py@idxcode{#1}}}} 218 \newcommand{\kwindex}[1]{\indexii{keyword}{#1@{\py@idxcode{#1}}}}
219 \newcommand{\stindex}[1]{\indexii{statement}{#1@{\py@idxcode{#1}}}} 219 \newcommand{\stindex}[1]{\indexii{statement}{#1@{\py@idxcode{#1}}}}
220 \newcommand{\opindex}[1]{\indexii{operator}{#1@{\py@idxcode{#1}}}} 220 \newcommand{\opindex}[1]{\indexii{operator}{#1@{\py@idxcode{#1}}}}
221 \newcommand{\exindex}[1]{\indexii{exception}{#1@{\py@idxcode{#1}}}} 221 \newcommand{\exindex}[1]{\indexii{exception}{#1@{\py@idxcode{#1}}}}
222 \newcommand{\obindex}[1]{\indexii{object}{#1}} 222 \newcommand{\obindex}[1]{\indexii{object}{#1}}
223 \newcommand{\bifuncindex}[1]{\withsubitem{(built-in function)}{\ttindex{#1()}}} 223 \newcommand{\bifuncindex}[1]{%
224 \index{#1@{\py@idxcode{#1()}} (built-in function)}}
224 225
225 % Add an index entry for a module 226 % Add an index entry for a module
226 \newcommand{\py@refmodule}[2]{\index{#1@{\py@idxcode{#1}} (#2module)}} 227 \newcommand{\py@refmodule}[2]{\index{#1@{\py@idxcode{#1}} (#2module)}}
227 \newcommand{\refmodindex}[1]{\py@refmodule{#1}{}} 228 \newcommand{\refmodindex}[1]{\py@refmodule{#1}{}}
228 \newcommand{\refbimodindex}[1]{\py@refmodule{#1}{built-in }} 229 \newcommand{\refbimodindex}[1]{\py@refmodule{#1}{built-in }}
290 \index{#1@{\py@idxcode{#1}}}% 291 \index{#1@{\py@idxcode{#1}}}%
291 \fi% 292 \fi%
292 } 293 }
293 \newcommand{\withsubitem}[2]{% 294 \newcommand{\withsubitem}[2]{%
294 \begingroup% 295 \begingroup%
296 \def\index@subitem{#1}%
295 \ifpy@usingsubitem% 297 \ifpy@usingsubitem%
296 \def\index@subitem{#1}#2% 298 #2%
297 \else% 299 \else%
298 \def\index@subitem{#1}#2% 300 \py@usingsubitemtrue%
301 #2%
299 \py@usingsubitemfalse% 302 \py@usingsubitemfalse%
300 \fi 303 \fi
301 \endgroup% 304 \endgroup%
302 } 305 }
303 306
562 % \begin{ctypedesc}[index name]{typedef name} 565 % \begin{ctypedesc}[index name]{typedef name}
563 \newenvironment{ctypedesc}[2][\py@badkey]{ 566 \newenvironment{ctypedesc}[2][\py@badkey]{
564 \begin{fulllineitems} 567 \begin{fulllineitems}
565 \item[\bfcode{#2}% 568 \item[\bfcode{#2}%
566 \ifx#1\@undefined% 569 \ifx#1\@undefined%
567 \withsubitem{(C type)}{\ttindex{#2}}% 570 \index{#2@{\py@idxcode{#2}} (C type)}
568 \else% 571 \else%
569 \withsubitem{(C type)}{\ttindex{#1}}% 572 \index{#2@{\py@idxcode{#1}} (C type)}
570 \fi] 573 \fi]
571 }{\end{fulllineitems}} 574 }{\end{fulllineitems}}
572 575
573 % Funky macros ----------------------------------------------------------- 576 % Funky macros -----------------------------------------------------------
574 % \begin{csimplemacro}{name} 577 % \begin{csimplemacro}{name}
575 % -- "simple" because it has no args; NOT for constant definitions! 578 % -- "simple" because it has no args; NOT for constant definitions!
576 \newenvironment{csimplemacrodesc}[1]{ 579 \newenvironment{csimplemacrodesc}[1]{
577 \begin{fulllineitems} 580 \begin{fulllineitems}
578 \item[\bfcode{#1}\withsubitem{(macro)}{\ttindex{#1}}] 581 \item[\bfcode{#1}\index{#1@{\py@idxcode{#1}} (macro)}]
579 }{\end{fulllineitems}} 582 }{\end{fulllineitems}}
580 583
581 % simple functions (not methods) ----------------------------------------- 584 % simple functions (not methods) -----------------------------------------
582 % \begin{funcdesc}{name}{args} 585 % \begin{funcdesc}{name}{args}
583 \newcommand{\funcline}[2]{\funclineni{#1}{#2}\ttindex{#1()}} 586 \newcommand{\funcline}[2]{\funclineni{#1}{#2}%
587 \index{#1@{\py@idxcode{#1()}} (in \py@thismodule)}}
584 \newenvironment{funcdesc}[2]{ 588 \newenvironment{funcdesc}[2]{
585 \begin{fulllineitems} 589 \begin{fulllineitems}
586 \funcline{#1}{#2} 590 \funcline{#1}{#2}
587 }{\end{fulllineitems}} 591 }{\end{fulllineitems}}
588 592
598 \newenvironment{classdesc}[2]{ 602 \newenvironment{classdesc}[2]{
599 % Using \renewcommand doesn't work for this, for unknown reasons: 603 % Using \renewcommand doesn't work for this, for unknown reasons:
600 \global\def\py@thisclass{#1} 604 \global\def\py@thisclass{#1}
601 \begin{fulllineitems} 605 \begin{fulllineitems}
602 \item[\code{\bfcode{#1}(\py@varvars{#2})}% 606 \item[\code{\bfcode{#1}(\py@varvars{#2})}%
603 \withsubitem{(class in \py@thismodule)}{\ttindex{#1}}] 607 \index{#1@{\py@idxcode{#1}} (class in \py@thismodule)}]
604 }{\end{fulllineitems}} 608 }{\end{fulllineitems}}
605 609
606 % \begin{excclassdesc}{name}{constructor args} 610 % \begin{excclassdesc}{name}{constructor args}
607 % but indexes as an exception 611 % but indexes as an exception
608 \newenvironment{excclassdesc}[2]{ 612 \newenvironment{excclassdesc}[2]{
609 % Using \renewcommand doesn't work for this, for unknown reasons: 613 % Using \renewcommand doesn't work for this, for unknown reasons:
610 \global\def\py@thisclass{#1} 614 \global\def\py@thisclass{#1}
611 \begin{fulllineitems} 615 \begin{fulllineitems}
612 \item[\code{\bfcode{#1}(\py@varvars{#2})}% 616 \item[\code{\bfcode{#1}(\py@varvars{#2})}%
613 \withsubitem{(exception in \py@thismodule)}{\ttindex{#1}}] 617 \index{#1@{\py@idxcode{#1}} (exception in \py@thismodule)}]
614 }{\end{fulllineitems}} 618 }{\end{fulllineitems}}
615 619
616 620
617 \let\py@classbadkey=\@undefined 621 \let\py@classbadkey=\@undefined
618 622
619 % object method ---------------------------------------------------------- 623 % object method ----------------------------------------------------------
620 % \begin{methoddesc}[classname]{methodname}{args} 624 % \begin{methoddesc}[classname]{methodname}{args}
621 \newcommand{\methodline}[3][\py@classbadkey]{ 625 \newcommand{\methodline}[3][\@undefined]{
622 \methodlineni{#2}{#3} 626 \methodlineni{#2}{#3}
623 \ifx#1\@undefined 627 \ifx#1\@undefined
624 \withsubitem{(\py@thisclass\ method)}{\ttindex{#2()}} 628 \index{#2@{\py@idxcode{#2()}} (\py@thisclass\ method)}
625 \else 629 \else
626 \withsubitem{(#1 method)}{\ttindex{#2()}} 630 \index{#2@{\py@idxcode{#2()}} (#1 method)}
627 \fi 631 \fi
628 } 632 }
629 \newenvironment{methoddesc}[3][\py@classbadkey]{ 633 \newenvironment{methoddesc}[3][\@undefined]{
630 \begin{fulllineitems} 634 \begin{fulllineitems}
631 \ifx#1\@undefined 635 \ifx#1\@undefined
632 \methodline{#2}{#3} 636 \methodline{#2}{#3}
633 \else 637 \else
634 \def\py@thisclass{#1} 638 \def\py@thisclass{#1}
635 \methodline[#1]{#2}{#3} 639 \methodline{#2}{#3}
636 \fi 640 \fi
637 }{\end{fulllineitems}} 641 }{\end{fulllineitems}}
638 642
639 % similar to {methoddesc}, but doesn't add to the index 643 % similar to {methoddesc}, but doesn't add to the index
640 % (never actually uses the optional argument) 644 % (never actually uses the optional argument)
648 % object data attribute -------------------------------------------------- 652 % object data attribute --------------------------------------------------
649 % \begin{memberdesc}[classname]{membername} 653 % \begin{memberdesc}[classname]{membername}
650 \newcommand{\memberline}[2][\py@classbadkey]{% 654 \newcommand{\memberline}[2][\py@classbadkey]{%
651 \ifx#1\@undefined 655 \ifx#1\@undefined
652 \memberlineni{#2} 656 \memberlineni{#2}
653 \withsubitem{(\py@thisclass\ attribute)}{\ttindex{#2}} 657 \index{#2@{\py@idxcode{#2}} (\py@thisclass\ attribute)}
654 \else 658 \else
655 \memberlineni{#2} 659 \memberlineni{#2}
656 \withsubitem{(#1 attribute)}{\ttindex{#2}} 660 \index{#2@{\py@idxcode{#2}} (#1 attribute)}
657 \fi 661 \fi
658 } 662 }
659 \newenvironment{memberdesc}[2][\py@classbadkey]{ 663 \newenvironment{memberdesc}[2][\py@classbadkey]{
660 \begin{fulllineitems} 664 \begin{fulllineitems}
661 \ifx#1\@undefined 665 \ifx#1\@undefined
662 \memberline{#2} 666 \memberline{#2}
663 \else 667 \else
664 \def\py@thisclass{#1} 668 \def\py@thisclass{#1}
665 \memberline[#1]{#2} 669 \memberline{#2}
666 \fi 670 \fi
667 }{\end{fulllineitems}} 671 }{\end{fulllineitems}}
668 672
669 % similar to {memberdesc}, but doesn't add to the index 673 % similar to {memberdesc}, but doesn't add to the index
670 % (never actually uses the optional argument) 674 % (never actually uses the optional argument)
674 \memberlineni{#2} 678 \memberlineni{#2}
675 }{\end{fulllineitems}} 679 }{\end{fulllineitems}}
676 680
677 % For exceptions: -------------------------------------------------------- 681 % For exceptions: --------------------------------------------------------
678 % \begin{excdesc}{name} 682 % \begin{excdesc}{name}
679 % -- need support for constructor; maybe use optional parameter? 683 % -- for constructor information, use excclassdesc instead
680 \newenvironment{excdesc}[1]{ 684 \newenvironment{excdesc}[1]{
681 \begin{fulllineitems} 685 \begin{fulllineitems}
682 \item[\bfcode{#1}\ttindex{#1}] 686 \item[\bfcode{#1}%
687 \index{#1@{\py@idxcode{#1}} (exception in \py@thismodule)}]
683 }{\end{fulllineitems}} 688 }{\end{fulllineitems}}
684 689
685 % Module data or constants: ---------------------------------------------- 690 % Module data or constants: ----------------------------------------------
686 % \begin{datadesc}{name} 691 % \begin{datadesc}{name}
687 \newcommand{\dataline}[1]{\datalineni{#1}\ttindex{#1}} 692 \newcommand{\dataline}[1]{%
693 \datalineni{#1}\index{#1@{\py@idxcode{#1}} (data in \py@thismodule)}}
688 \newenvironment{datadesc}[1]{ 694 \newenvironment{datadesc}[1]{
689 \begin{fulllineitems} 695 \begin{fulllineitems}
690 \dataline{#1} 696 \dataline{#1}
691 }{\end{fulllineitems}} 697 }{\end{fulllineitems}}
692 698