Skip to content

Commit cdd6dda

Browse files
committed
[xref] Add glossary of cross-references between C++14 section labels and
C++17 section labels. Fixes #1547.
1 parent 89260fb commit cdd6dda

File tree

3 files changed

+125
-0
lines changed

3 files changed

+125
-0
lines changed

source/back.tex

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
%!TEX root = std.tex
22

3+
% FIXME: For unknown reasons, hanging paragraphs are not indented within our
4+
% glossaries by default.
5+
\let\realglossitem\glossitem
6+
\renewcommand{\glossitem}[4]{\hangpara{4em}{1}\realglossitem{#1}{#2}{#3}{#4}}
7+
38
\clearpage
49
\renewcommand{\glossaryname}{Cross references}
510
\renewcommand{\preglossaryhook}{This annex lists each section label and the
@@ -11,6 +16,18 @@
1116
\printglossary[xrefindex]
1217
}
1318

19+
\clearpage
20+
\input{xrefdelta}
21+
\renewcommand{\glossaryname}{Cross references for ISO C++ 2014}
22+
\renewcommand{\preglossaryhook}{All section labels from
23+
ISO \CppXIV (ISO/IEC 14882:2014, \doccite{Programming Languages --- \Cpp})
24+
are present in this document, with the exceptions described below.\\}
25+
\renewcommand{\leftmark}{\glossaryname}
26+
{
27+
\raggedright
28+
\printglossary[xrefdelta]
29+
}
30+
1431
\clearpage
1532
\renewcommand{\leftmark}{\indexname}
1633
{

source/std.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
\makeindex[grammarindex]
6565
\makeindex[impldefindex]
6666
\makeglossary[xrefindex]
67+
\makeglossary[xrefdelta]
6768

6869
%%--------------------------------------------------
6970
%% fix interaction between hyperref and other

source/xrefdelta.tex

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
%!TEX root = std.tex
2+
3+
\newcommand{\secref}[1]{\hyperref[#1]{#1}}
4+
5+
% Turn off page numbers for this glossary, they're not useful.
6+
\newcommand{\swallow}[1]{}
7+
\changeglossnumformat[xrefdelta]{|swallow}
8+
9+
\newcommand{\oldxref}[2]{\glossary[xrefdelta]{#1}{#2}}
10+
\newcommand{\removedxref}[1]{\oldxref{#1}{\textit{removed}}}
11+
\newcommand{\movedxrefs}[2]{\oldxref{#1}{\textit{see} #2}}
12+
\newcommand{\movedxref}[2]{\movedxrefs{#1}{\secref{#2}}}
13+
\newcommand{\movedxrefii}[3]{\movedxrefs{#1}{\secref{#2}, \secref{#3}}}
14+
\newcommand{\movedxrefiii}[4]{\movedxrefs{#1}{\secref{#2}, \secref{#3}, \secref{#4}}}
15+
\newcommand{\deprxref}[1]{\oldxref{#1}{\textit{see} \secref{depr.#1}}}
16+
17+
% Removed features.
18+
\removedxref{depr.auto.ptr}
19+
\removedxref{auto.ptr}
20+
\removedxref{auto.ptr.cons}
21+
\removedxref{auto.ptr.conv}
22+
\removedxref{auto.ptr.members}
23+
\removedxref{depr.incr.bool}
24+
\removedxref{locale.stdcvt}
25+
\removedxref{exception.unexpected}
26+
\removedxref{except.unexpected}
27+
\removedxref{get.unexpected}
28+
\removedxref{set.unexpected}
29+
\removedxref{unexpected}
30+
\removedxref{unexpected.handler}
31+
\removedxref{depr.adaptors}
32+
\removedxref{depr.base}
33+
\removedxref{depr.function.objects}
34+
\removedxref{depr.function.pointer.adaptors}
35+
\removedxref{depr.lib.bind.1st}
36+
\removedxref{depr.lib.bind.2nd}
37+
\removedxref{depr.lib.binder.1st}
38+
\removedxref{depr.lib.binder.2nd}
39+
\removedxref{depr.lib.binders}
40+
\removedxref{depr.member.pointer.adaptors}
41+
\removedxref{depr.ios.members}
42+
\removedxref{depr.alg.random.shuffle}
43+
\removedxref{depr.register}
44+
\removedxref{lex.trigraph}
45+
46+
% Renamed sections.
47+
\movedxref{atomics.types.operations.arith}{atomics.types.int}
48+
\movedxref{atomics.types.operations.general}{atomics.types.operations}
49+
\movedxref{atomics.types.operations.pointer}{atomics.types.pointer}
50+
\movedxref{atomics.types.operations.req}{atomics.types.operations}
51+
\movedxref{atomics.types.operations.templ}{atomics.types.operations}
52+
\movedxrefii{basic.start.init}{basic.start.static}{basic.start.dynamic}
53+
\movedxref{bind}{func.bind}
54+
\movedxref{charname}{lex.name}
55+
\movedxrefs{charname.allowed}{Table~\ref{tab:charname.allowed}}
56+
\movedxrefs{charname.disallowed}{Table~\ref{tab:charname.disallowed}}
57+
\movedxrefii{class.inhctor}{class.inhctor.init}{namespace.udecl}
58+
\movedxref{c.limits}{climits.syn}
59+
\movedxref{date.time}{ctime.syn}
60+
\movedxref{defns.additional}{definitions}
61+
\movedxref{expr.prim.general}{expr.prim}
62+
\movedxref{fstreams}{fstream.syn}
63+
\movedxref{global.names}{lex.name}
64+
\movedxrefiii{iostream.format.overview}{istream.syn}{ostream.syn}{iomanip.syn}
65+
\movedxref{iostreams.base.overview}{ios.syn}
66+
\movedxref{limits}{support.limits}
67+
\movedxrefii{limits.numeric}{support.limits.general}{limits.syn}
68+
\movedxref{stream.buffers.overview}{streambuf.syn}
69+
\movedxref{string.streams.overview}{sstream.syn}
70+
\movedxref{uninitialized.fill.n}{uninitialized.fill}
71+
\movedxref{util.smartptr.weakptr}{util.smartptr.weak.bad}
72+
73+
% Deprecated features.
74+
\movedxref{ccmplx}{depr.ccomplex.syn}
75+
\deprxref{conversions.buffer}
76+
\deprxref{conversions.string}
77+
\deprxref{iterator.basic}
78+
\deprxref{negators}
79+
\deprxref{storage.iterator}
80+
\deprxref{temporary.buffer}
81+
\deprxref{uncaught}
82+
83+
% :: -> .
84+
\movedxref{istream::extractors}{istream.extractors}
85+
\movedxref{string::append}{string.append}
86+
\movedxref{string::assign}{string.assign}
87+
\movedxref{string::compare}{string.compare}
88+
\movedxref{string::copy}{string.copy}
89+
\movedxref{string::erase}{string.erase}
90+
\movedxref{string::find}{string.find}
91+
\movedxref{string::find.first.not.of}{string.find.first.not.of}
92+
\movedxref{string::find.first.of}{string.find.first.of}
93+
\movedxref{string::find.last.not.of}{string.find.last.not.of}
94+
\movedxref{string::find.last.of}{string.find.last.of}
95+
\movedxref{string::insert}{string.insert}
96+
\movedxref{string::op<}{string.op<}
97+
\movedxref{string::op<=}{string.op<=}
98+
\movedxref{string::op>}{string.op>}
99+
\movedxref{string::op>=}{string.op>=}
100+
\movedxref{string::op!=}{string.op!=}
101+
\movedxref{string::op+}{string.op+}
102+
\movedxref{string::op+=}{string.op+=}
103+
\movedxref{string::operator==}{string.operator==}
104+
\movedxref{string::replace}{string.replace}
105+
\movedxref{string::rfind}{string.rfind}
106+
\movedxref{string::substr}{string.substr}
107+
\movedxref{string::swap}{string.swap}

0 commit comments

Comments
 (0)