diff --git a/build/pkgs/cylp/SPKG.rst b/build/pkgs/cylp/SPKG.rst
index 10b8192e39c..de448e0a89b 100644
--- a/build/pkgs/cylp/SPKG.rst
+++ b/build/pkgs/cylp/SPKG.rst
@@ -13,7 +13,7 @@ Eclipse Public License (EPL) version 2 (without a Secondary Licenses Notice).
Note: This license is incompatible with the GPL according to
https://www.gnu.org/licenses/license-list.html#EPL2;
-see also the discussion in :trac:`26511`.
+see also the discussion in :issue:`26511`.
Upstream Contact
----------------
diff --git a/src/doc/en/developer/packaging.rst b/src/doc/en/developer/packaging.rst
index ea391941c9c..b4d9ad475fb 100644
--- a/src/doc/en/developer/packaging.rst
+++ b/src/doc/en/developer/packaging.rst
@@ -240,7 +240,7 @@ before or after the package has been installed into
``$SAGE_LOCAL``. It is encouraged to put steps which modify already
installed files in a separate ``spkg-postinst.in`` script template
rather than combining them with ``spkg-install.in``. This is because
-since :trac:`24106`, ``spkg-install`` does not necessarily install
+since :issue:`24106`, ``spkg-install`` does not necessarily install
packages directly to ``$SAGE_LOCAL``. However, by the time
``spkg-postinst`` is run, the installation to ``$SAGE_LOCAL`` is
complete.
@@ -308,7 +308,7 @@ Likewise for :envvar:`CXXFLAGS`, :envvar:`FCFLAGS`, and :envvar:`F77FLAGS`.
Prior to Sage 8.1 the shebang line was included, and the scripts were
marked executable. However, this is no longer the case as of
- :trac:`23179`. Now the scripts in the source tree are deliberately
+ :issue:`23179`. Now the scripts in the source tree are deliberately
written not to be directly executed, and are only made into executable
scripts when they are copied to the package's build directory.
@@ -491,7 +491,7 @@ The following are also available, but rarely used.
platforms.) Check shared libraries loaded by ``EXECUTABLE`` (may be a
program or another library) for a library starting with ``SONAME``, and
if found appends ``SONAME`` to the ``LD_PRELOAD`` environment variable.
- See :trac:`24885`.
+ See :issue:`24885`.
.. _spkg-configure.m4:
@@ -642,7 +642,7 @@ constraints based on their experience and tests. When a package
update is made in order to pick up a critical bug fix from a newer
version, then the lower bound should be adjusted.
Setting upper bounds to guard against incompatible future changes is
-a complex topic; see :trac:`33520`.
+a complex topic; see :issue:`33520`.
.. _section-spkg-SPKG-txt:
diff --git a/src/doc/en/developer/packaging_sage_library.rst b/src/doc/en/developer/packaging_sage_library.rst
index d5f5a3dac4b..048a14ced5c 100644
--- a/src/doc/en/developer/packaging_sage_library.rst
+++ b/src/doc/en/developer/packaging_sage_library.rst
@@ -265,7 +265,7 @@ that are imposed by the build-time dependencies.
We can define some meaningful small distributions that just consist of
a single or a few Cython modules. For example, **sagemath-tdlib**
-(:trac:`29864`) would just package the single
+(:issue:`29864`) would just package the single
Cython module that must be linked with ``tdlib``,
:mod:`sage.graphs.graph_decompositions.tdlib`. Starting with the Sage
9.6 development cycle, as soon as namespace packages are activated, we
@@ -701,7 +701,7 @@ The whole ``.tox`` directory can be safely deleted at any time.
We can do the same with other distributions, for example the large
distribution **sagemath-standard-no-symbolics**
-(from :trac:`35095`), which is intended to provide
+(from :issue:`35095`), which is intended to provide
everything that is currently in the standard Sage library, i.e.,
without depending on optional packages, but without the packages
:mod:`sage.symbolic`, :mod:`sage.calculus`, etc.
@@ -713,7 +713,7 @@ Again we can run the test with ``tox`` in a separate virtual environment::
Some small distributions, for example the ones providing the two
lowest levels, `sagemath-objects `_
and `sagemath-categories `_
-(from :trac:`29865`), can be installed and tested
+(from :issue:`29865`), can be installed and tested
without relying on the wheels from the Sage build::
$ ./bootstrap && ./sage -sh -c '(cd pkgs/sagemath-objects && SAGE_NUM_THREADS=16 tox -v -v -v -e sagepython)'
diff --git a/src/doc/en/installation/source.rst b/src/doc/en/installation/source.rst
index 26454e4d6d3..cc1b7159c0a 100644
--- a/src/doc/en/installation/source.rst
+++ b/src/doc/en/installation/source.rst
@@ -170,7 +170,7 @@ animations, Sage needs to use one of the packages :ref:`FFmpeg
.. literalinclude:: void-recommended.txt
In addition to these, if you don't want Sage to build optional packages that might
-be available from your OS, cf. the growing list of such packages on :trac:`27330`,
+be available from your OS, cf. the growing list of such packages on :issue:`27330`,
install:
.. tab:: Debian/Ubuntu
@@ -1016,7 +1016,7 @@ Environment variables dealing with specific Sage packages
.. envvar:: OPENBLAS_CONFIGURE
Adds additional configuration flags for
- the OpenBLAS package that gets added to the ``make`` command. (see :trac:`23272`)
+ the OpenBLAS package that gets added to the ``make`` command. (see :issue:`23272`)
.. envvar:: PARI_CONFIGURE
diff --git a/src/doc/en/prep/Quickstarts/Statistics-and-Distributions.rst b/src/doc/en/prep/Quickstarts/Statistics-and-Distributions.rst
index e83516d6833..b5eb3d842a2 100644
--- a/src/doc/en/prep/Quickstarts/Statistics-and-Distributions.rst
+++ b/src/doc/en/prep/Quickstarts/Statistics-and-Distributions.rst
@@ -38,7 +38,7 @@ harmonic mean::
2.5531914893617023
We do not recommend to use Python's built in ``statistics`` module with Sage.
-It has a known incompatibility with number types defined in Sage, see :trac:`28234`.
+It has a known incompatibility with number types defined in Sage, see :issue:`28234`.
Distributions
diff --git a/src/doc/en/reference/coercion/index.rst b/src/doc/en/reference/coercion/index.rst
index 73dfd978008..89ae3140ff1 100644
--- a/src/doc/en/reference/coercion/index.rst
+++ b/src/doc/en/reference/coercion/index.rst
@@ -271,7 +271,7 @@ discovered between steps 1 and 2 above.
sage: f(3).parent()
Rational Field
-Note that by :trac:`14711` Sage's coercion system uses maps with weak
+Note that by :issue:`14711` Sage's coercion system uses maps with weak
references to the domain. Such maps should only be used internally, and so a
copy should be used instead (unless one knows what one is doing)::
diff --git a/src/doc/en/reference/combinat/module_list.rst b/src/doc/en/reference/combinat/module_list.rst
index 771d335d88d..b95632f9674 100644
--- a/src/doc/en/reference/combinat/module_list.rst
+++ b/src/doc/en/reference/combinat/module_list.rst
@@ -10,7 +10,7 @@ Comprehensive Module List
and copy pasting the result back there.
-.. TODO:: See :trac:`17421` for desirable improvements.
+.. TODO:: See :issue:`17421` for desirable improvements.
.. toctree::
:maxdepth: 1
diff --git a/src/doc/en/thematic_tutorials/coercion_and_categories.rst b/src/doc/en/thematic_tutorials/coercion_and_categories.rst
index 5294b37fb7f..edd89ad3c42 100644
--- a/src/doc/en/thematic_tutorials/coercion_and_categories.rst
+++ b/src/doc/en/thematic_tutorials/coercion_and_categories.rst
@@ -723,7 +723,7 @@ A first note on performance
---------------------------
The category framework is sometimes blamed for speed regressions, as in
-:trac:`9138` and :trac:`11900`. But if the category framework is *used
+:issue:`9138` and :issue:`11900`. But if the category framework is *used
properly*, then it is fast. For illustration, we determine the time needed to
access an attribute inherited from the element class. First, we consider an
element that uses the class that we implemented above, but does not use the
@@ -1427,7 +1427,7 @@ Being able to do arithmetics involving elements of different parents, with the
automatic creation of a pushout to contain the result, is certainly
convenient\---but one should not rely on it, if speed matters. Simply the
conversion of elements into different parents takes time. Moreover, by
-:trac:`14058`, the pushout may be subject to Python's cyclic garbage
+:issue:`14058`, the pushout may be subject to Python's cyclic garbage
collection. Hence, if one does not keep a strong reference to it, the same
parent may be created repeatedly, which is a waste of time. In the following
example, we illustrate the slow\--down resulting from blindly relying on
diff --git a/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/nf_introduction.rst b/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/nf_introduction.rst
index 658154854b3..43696457a27 100644
--- a/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/nf_introduction.rst
+++ b/src/doc/en/thematic_tutorials/explicit_methods_in_number_theory/nf_introduction.rst
@@ -310,7 +310,7 @@ root is :math:`x^6 + 10x^3 - 2x^2 + 25`.
.. warning::
- The following tests are currently broken until :trac:`5338` is
+ The following tests are currently broken until :issue:`5338` is
fixed.
.. skip
diff --git a/src/doc/en/thematic_tutorials/lie/weyl_groups.rst b/src/doc/en/thematic_tutorials/lie/weyl_groups.rst
index f936073a53a..6831d95af90 100644
--- a/src/doc/en/thematic_tutorials/lie/weyl_groups.rst
+++ b/src/doc/en/thematic_tutorials/lie/weyl_groups.rst
@@ -122,7 +122,7 @@ and whose values are the roots, you may use the inverse family::
.. NOTE::
- The behaviour of this function was changed in :trac:`20027`.
+ The behaviour of this function was changed in :issue:`20027`.
The Weyl group is implemented as a GAP matrix group. You therefore can
display its character table as follows::
diff --git a/src/doc/en/thematic_tutorials/linear_programming.rst b/src/doc/en/thematic_tutorials/linear_programming.rst
index c8bf14c4eb4..4baf2936f93 100644
--- a/src/doc/en/thematic_tutorials/linear_programming.rst
+++ b/src/doc/en/thematic_tutorials/linear_programming.rst
@@ -455,7 +455,7 @@ following libraries are currently supported:
* `CPLEX
`_:
Proprietary, but available for free for researchers and students through
- IBM's Academic Initiative. Since :trac:`27790`, only versions 12.8 and
+ IBM's Academic Initiative. Since :issue:`27790`, only versions 12.8 and
above are supported.
Install CPLEX according to the instructions on the
diff --git a/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_advanced.rst b/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_advanced.rst
index 7bd9934cffd..78f81f6558c 100644
--- a/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_advanced.rst
+++ b/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_advanced.rst
@@ -39,7 +39,7 @@ manifold endowed with a positive definite metric tensor::
Riemannian metric g on the Euclidean space E^3
Actually ``RR`` is used here as a proxy for the real field (this should be
-replaced in the future, see the discussion at :trac:`24456`) and the 53 bits of precision play
+replaced in the future, see the discussion at :issue:`24456`) and the 53 bits of precision play
of course no role for the symbolic computations.
Let us introduce spherical and cylindrical coordinates on
diff --git a/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_plane.rst b/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_plane.rst
index 921724105a0..d790e7a36dc 100644
--- a/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_plane.rst
+++ b/src/doc/en/thematic_tutorials/vector_calculus/vector_calc_plane.rst
@@ -500,7 +500,7 @@ manifold endowed with a positive definite metric tensor::
Actually ``RR`` is used here as a proxy for the real field (this should
be replaced in the future, see the discussion at
-:trac:`24456`) and the 53 bits of
+:issue:`24456`) and the 53 bits of
precision play of course no role for the symbolic computations.
The user atlas of `\mathbb{E}^2` has two charts::
diff --git a/src/sage/graphs/path_enumeration.pyx b/src/sage/graphs/path_enumeration.pyx
index bae2335cc77..78832f89134 100644
--- a/src/sage/graphs/path_enumeration.pyx
+++ b/src/sage/graphs/path_enumeration.pyx
@@ -1597,7 +1597,7 @@ def _all_paths_iterator(self, vertex, ending_vertices=None,
# the first vertex in the path). In this latter case we must
# not exit the new vertex again, so we do not consider it
# for further extension, but just yield it immediately. See
- # trac #12385.
+ # Issue #12385.
frozen_path = frozenset(path)
for neighbor in neighbor_iterator(path[-1]):
if neighbor not in frozen_path:
diff --git a/src/sage/libs/giac/giac.pyx b/src/sage/libs/giac/giac.pyx
index 3096e00f8af..f65d0a64b4b 100644
--- a/src/sage/libs/giac/giac.pyx
+++ b/src/sage/libs/giac/giac.pyx
@@ -2102,7 +2102,7 @@ class GiacInstance:
libgiac=GiacInstance()
-# trac #23976 (bound threads with SAGE_NUM_THREADS)
+# Issue #23976 (bound threads with SAGE_NUM_THREADS)
import os
try:
ncpus = int(os.environ['SAGE_NUM_THREADS'])
diff --git a/src/sage/libs/ntl/ntl_GF2EX.pyx b/src/sage/libs/ntl/ntl_GF2EX.pyx
index 4e1c4324915..8c6850fd62e 100644
--- a/src/sage/libs/ntl/ntl_GF2EX.pyx
+++ b/src/sage/libs/ntl/ntl_GF2EX.pyx
@@ -58,7 +58,7 @@ cdef class ntl_GF2EX():
if modulus is None:
raise ValueError("You must specify a modulus when creating a GF2E.")
- str_x = str(x) # can cause modulus to change trac #25790
+ str_x = str(x) # can cause modulus to change; Issue #25790
self.c.restore_c()
ccreadstr(self.x, str_x)
diff --git a/src/sage/libs/ntl/ntl_ZZ_p.pyx b/src/sage/libs/ntl/ntl_ZZ_p.pyx
index cca767303f7..261898e5ed6 100644
--- a/src/sage/libs/ntl/ntl_ZZ_p.pyx
+++ b/src/sage/libs/ntl/ntl_ZZ_p.pyx
@@ -127,7 +127,7 @@ cdef class ntl_ZZ_p():
mpz_to_ZZ(&den, (v.denominator()).value)
ZZ_p_div(self.x, ZZ_to_ZZ_p(num), ZZ_to_ZZ_p(den))
else:
- str_v = str(v) # can cause modulus to change trac #25790
+ str_v = str(v) # can cause modulus to change; Issue #25790
self.c.restore_c()
ccreadstr(self.x, str_v)
diff --git a/src/sage/libs/ntl/ntl_ZZ_pE.pyx b/src/sage/libs/ntl/ntl_ZZ_pE.pyx
index b0882217e86..a1eeb1c45a5 100644
--- a/src/sage/libs/ntl/ntl_ZZ_pE.pyx
+++ b/src/sage/libs/ntl/ntl_ZZ_pE.pyx
@@ -109,7 +109,7 @@ cdef class ntl_ZZ_pE():
self.x = ZZ_pX_to_ZZ_pE((v).x)
elif isinstance(v, (list, tuple)):
tmp_zzpx = ntl_ZZ_pX(v, self.c.pc)
- self.c.restore_c() # allocating tmp_zzpx can change the current modulus trac #25790
+ self.c.restore_c() # allocating tmp_zzpx can change the current modulus; Issue #25790
self.x = ZZ_pX_to_ZZ_pE(tmp_zzpx.x)
elif isinstance(v, int):
PyLong_to_ZZ(&temp, v)
@@ -122,7 +122,7 @@ cdef class ntl_ZZ_pE():
mpz_to_ZZ(&temp, (v).value)
self.x = ZZ_to_ZZ_pE(temp)
else:
- str_v = str(v) # can cause modulus to change trac #25790
+ str_v = str(v) # can cause modulus to change; Issue #25790
self.c.restore_c()
ccreadstr(self.x, str_v)
diff --git a/src/sage/libs/ntl/ntl_ZZ_pX.pyx b/src/sage/libs/ntl/ntl_ZZ_pX.pyx
index 3422239aaac..4db615bcd6c 100644
--- a/src/sage/libs/ntl/ntl_ZZ_pX.pyx
+++ b/src/sage/libs/ntl/ntl_ZZ_pX.pyx
@@ -111,7 +111,7 @@ cdef class ntl_ZZ_pX():
cc = x
ZZ_pX_SetCoeff(self.x, i, cc.x)
elif v is not None:
- s = str(v).replace(',', ' ').replace('L', '') # can change the modulus trac #25790
+ s = str(v).replace(',', ' ').replace('L', '') # can change the modulus; Issue #25790
self.c.restore_c()
ccreadstr(self.x, s)
diff --git a/src/sage/matrix/matrix0.pyx b/src/sage/matrix/matrix0.pyx
index 9eb3f9f4213..6ee61a05598 100644
--- a/src/sage/matrix/matrix0.pyx
+++ b/src/sage/matrix/matrix0.pyx
@@ -5748,7 +5748,7 @@ cdef class Matrix(sage.structure.element.Matrix):
# that it's 1.
#
# However, doing this naively causes trouble over inexact
- # fields -- see trac #2256. The *right* thing to do would
+ # fields -- see Issue #2256. The *right* thing to do would
# probably be to make sure that self.det() is nonzero. That
# doesn't work here, because our det over an arbitrary field
# just does expansion by minors and is unusable for even 10x10
diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx
index 47a836a0952..0f5c694a8be 100644
--- a/src/sage/matrix/matrix2.pyx
+++ b/src/sage/matrix/matrix2.pyx
@@ -7252,7 +7252,7 @@ cdef class Matrix(Matrix1):
if e[1] and defect >= 0:
rows.extend(e[1] + [e[1][0].parent().zero_vector()] * defect)
else:
- # see trac #27842
+ # see Issue #27842
raise RuntimeError(
"failed to compute eigenvectors for eigenvalue %s, "
"check eigenvectors_left() for partial results" % e[0])
diff --git a/src/sage/misc/dev_tools.py b/src/sage/misc/dev_tools.py
index c323fad538b..8a4420f2314 100644
--- a/src/sage/misc/dev_tools.py
+++ b/src/sage/misc/dev_tools.py
@@ -501,7 +501,7 @@ def import_statements(*objects, **kwds):
sage: import_statements('deprecated_RR')
Traceback (most recent call last):
...
- LookupError: object named 'deprecated_RR' is deprecated (see github issue 17458)
+ LookupError: object named 'deprecated_RR' is deprecated (see Issue #17458)
sage: lazy_import('sage.all', 'RR', namespace=sage.__dict__, deprecation=17458)
sage: import_statements('RR')
from sage.rings.real_mpfr import RR
@@ -612,7 +612,7 @@ def expand_comma_separated_names(obj):
except IndexError:
if deprecation:
raise LookupError(
- "object named {!r} is deprecated (see github issue "
+ "object named {!r} is deprecated (see Issue #"
"{})".format(name, deprecation))
else:
raise LookupError("no object named {!r}".format(name))
diff --git a/src/sage/misc/reset.pyx b/src/sage/misc/reset.pyx
index f0e1f07a90d..1d979197d3d 100644
--- a/src/sage/misc/reset.pyx
+++ b/src/sage/misc/reset.pyx
@@ -7,7 +7,7 @@ import sys
# Exclude these from the reset command.
# DATA, base64 -- needed by the notebook
-# Add exit and quit to EXCLUDE to resolve trac #22529 and trac #16704
+# Add exit and quit to EXCLUDE to resolve Issue #22529 and Issue #16704
EXCLUDE = set(['sage_mode', '__DIR__', 'DIR', 'DATA', 'base64', 'exit', 'quit'])
diff --git a/src/sage/misc/sagedoc.py b/src/sage/misc/sagedoc.py
index 61cabbd1e79..215939604d7 100644
--- a/src/sage/misc/sagedoc.py
+++ b/src/sage/misc/sagedoc.py
@@ -506,8 +506,7 @@ def process_dollars(s):
pythonversion = sys.version.split(' ')[0]
extlinks = {
'python': (f'https://docs.python.org/release/{pythonversion}/%s', None),
- 'trac': ('https://github.com/sagemath/sage/issues/%s', 'github issue #%s'), # support :issue: for backward compatibility
- 'issue': ('https://github.com/sagemath/sage/issues/%s', 'github issue #%s'),
+ 'issue': ('https://github.com/sagemath/sage/issues/%s', 'Issue #%s'),
'wikipedia': ('https://en.wikipedia.org/wiki/%s', 'Wikipedia article %s'),
'arxiv': ('https://arxiv.org/abs/%s', 'arXiv %s'),
'oeis': ('https://oeis.org/%s', 'OEIS sequence %s'),
diff --git a/src/sage/modules/with_basis/indexed_element.pyx b/src/sage/modules/with_basis/indexed_element.pyx
index 5e875ef3929..31ecd6c16d2 100644
--- a/src/sage/modules/with_basis/indexed_element.pyx
+++ b/src/sage/modules/with_basis/indexed_element.pyx
@@ -994,7 +994,7 @@ def _unpickle_element(C, d):
"""
return C._from_dict(d, coerce=False, remove_zeros=False)
-# Handle old CombinatorialFreeModuleElement pickles, see trac #22632
+# Handle old CombinatorialFreeModuleElement pickles, see Issue #22632
from sage.misc.persist import register_unpickle_override
register_unpickle_override("sage.combinat.free_module",
"CombinatorialFreeModuleElement",
diff --git a/src/sage/rings/finite_rings/finite_field_base.pyx b/src/sage/rings/finite_rings/finite_field_base.pyx
index 00b30bb5a44..8ceb2211a9a 100644
--- a/src/sage/rings/finite_rings/finite_field_base.pyx
+++ b/src/sage/rings/finite_rings/finite_field_base.pyx
@@ -876,7 +876,7 @@ cdef class FiniteField(Field):
return self.characteristic()**self.degree()
# cached because constructing the Factorization is slow;
- # see trac #11628.
+ # see Issue #11628.
@cached_method
def factored_order(self):
"""
diff --git a/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx b/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx
index 573f788d68c..00608f73403 100644
--- a/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx
+++ b/src/sage/rings/polynomial/polynomial_real_mpfr_dense.pyx
@@ -705,7 +705,7 @@ cdef class PolynomialRealDense(Polynomial):
TESTS::
- sage: R. = RR[] # trac #17311
+ sage: R. = RR[] # Issue #17311
sage: (x^2+1)(x=5)
26.0000000000000
"""
diff --git a/src/sage/rings/rational.pyx b/src/sage/rings/rational.pyx
index 62091386e5d..f7fd991b817 100644
--- a/src/sage/rings/rational.pyx
+++ b/src/sage/rings/rational.pyx
@@ -1640,7 +1640,7 @@ cdef class Rational(sage.structure.element.FieldElement):
# We should be able to run the code in the sign == 1 case
# below for both cases. However, we need to do extra work to
- # avoid a bug in GMP's mpz_perfect_power_p; see trac #4612 for
+ # avoid a bug in GMP's mpz_perfect_power_p; see Issue #4612 for
# more details.
#
# The code in the case of sign == -1 could definitely be
diff --git a/src/sage/sets/family.pyx b/src/sage/sets/family.pyx
index 0e1cafa1212..36a6b0d6b1f 100644
--- a/src/sage/sets/family.pyx
+++ b/src/sage/sets/family.pyx
@@ -935,7 +935,7 @@ class FiniteFamilyWithHiddenKeys(FiniteFamily):
hidden_function = unpickle_function(hidden_function)
self.__init__(d['dictionary'], d['hidden_keys'], hidden_function)
self.hidden_dictionary = d['hidden_dictionary']
- # Old pickles from before trac #22955 may not have a 'keys'
+ # Old pickles from before Issue #22955 may not have a 'keys'
if 'keys' in d:
self._keys = d['keys']
else:
diff --git a/src/sage/structure/factory.pyx b/src/sage/structure/factory.pyx
index ba692e1852b..8bd4bcd769e 100644
--- a/src/sage/structure/factory.pyx
+++ b/src/sage/structure/factory.pyx
@@ -722,7 +722,7 @@ def generic_factory_unpickle(factory, *args):
return F.get_object(*args)
except TypeError:
pass
- # See trac #16349: When replacing a UniqueFactory by something else (e.g.,
+ # See Issue #16349: When replacing a UniqueFactory by something else (e.g.,
# a UniqueRepresentation), then we get the object by calling.
#
# The first argument of a UniqueFactory pickle is a version number. We
diff --git a/src/sage/structure/parent.pyx b/src/sage/structure/parent.pyx
index b63e8aa9341..533b37af6d8 100644
--- a/src/sage/structure/parent.pyx
+++ b/src/sage/structure/parent.pyx
@@ -2503,7 +2503,7 @@ cdef class Parent(sage.structure.category_object.CategoryObject):
return self._convert_from_hash.get(S)
except KeyError:
mor = self.discover_convert_map_from(S)
- # Before trac #14711, the morphism has been
+ # Before Issue #14711, the morphism has been
# put both into _convert_from_list and into
# _convert_from_hash. But there is no reason
# to have a double book-keeping, specifically
diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx
index 6a725a35102..e55bd7e09e7 100644
--- a/src/sage/symbolic/expression.pyx
+++ b/src/sage/symbolic/expression.pyx
@@ -7828,9 +7828,9 @@ cdef class Expression(Expression_abc):
sage: gcd(I + I*x, x^2 - 1)
x + 1
sage: alg = SR(QQbar(sqrt(2) + I*sqrt(3)))
- sage: gcd(alg + alg*x, x^2 - 1) # known bug (trac #28489)
+ sage: gcd(alg + alg*x, x^2 - 1) # known bug (Issue #28489)
x + 1
- sage: gcd(alg - alg*x, x^2 - 1) # known bug (trac #28489)
+ sage: gcd(alg - alg*x, x^2 - 1) # known bug (Issue #28489)
x - 1
sage: sqrt2 = SR(QQbar(sqrt(2)))
sage: gcd(sqrt2 + x, x^2 - 2) # known bug
diff --git a/src/sage/symbolic/function.pyx b/src/sage/symbolic/function.pyx
index 78e2cd7b51b..b8529ae2fb9 100644
--- a/src/sage/symbolic/function.pyx
+++ b/src/sage/symbolic/function.pyx
@@ -1105,7 +1105,7 @@ cdef class BuiltinFunction(Function):
sage: p3 = AFunction('p3', 3)
sage: p3(x) # needs sage.symbolic
x^3
- sage: loads(dumps(cot)) == cot # trac #15138
+ sage: loads(dumps(cot)) == cot # Issue #15138
True
"""
# check if already defined
diff --git a/src/sage_docbuild/builders.py b/src/sage_docbuild/builders.py
index b687c0ee10b..caee6ec7be2 100644
--- a/src/sage_docbuild/builders.py
+++ b/src/sage_docbuild/builders.py
@@ -30,7 +30,7 @@
build. Then new rst files are generated for new and updated modules. See
:meth:`get_new_and_updated_modules()`.
-After :trac:`31948`, when Sage is built, :class:`ReferenceBuilder` is not used
+After :issue:`31948`, when Sage is built, :class:`ReferenceBuilder` is not used
and its responsibility is now taken by the ``Makefile`` in ``$SAGE_ROOT/src/doc``.
"""
@@ -109,7 +109,7 @@ def builder_helper(type):
TESTS:
- Check that :trac:`25161` has been resolved::
+ Check that :issue:`25161` has been resolved::
sage: from sage_docbuild.builders import DocBuilder
sage: from sage_docbuild.__main__ import setup_parser
diff --git a/src/sage_docbuild/conf.py b/src/sage_docbuild/conf.py
index c5329e79cfd..d659b54814a 100644
--- a/src/sage_docbuild/conf.py
+++ b/src/sage_docbuild/conf.py
@@ -581,7 +581,7 @@ def call_intersphinx(app, env, node, contnode):
TESTS:
Check that the link from the thematic tutorials to the reference
- manual is relative, see :trac:`20118`::
+ manual is relative, see :issue:`20118`::
sage: from sage.env import SAGE_DOC
sage: thematic_index = os.path.join(SAGE_DOC, "html", "en", "thematic_tutorials", "index.html")
diff --git a/src/sage_docbuild/sphinxbuild.py b/src/sage_docbuild/sphinxbuild.py
index 0422b6f6866..5621fe9e456 100644
--- a/src/sage_docbuild/sphinxbuild.py
+++ b/src/sage_docbuild/sphinxbuild.py
@@ -205,7 +205,7 @@ def _log_line(self, line):
TESTS:
- Verify that :trac:`25160` has been resolved::
+ Verify that :issue:`25160` has been resolved::
sage: logger = SageSphinxLogger(stdout, "#25160")
sage: import traceback
diff --git a/src/sage_docbuild/utils.py b/src/sage_docbuild/utils.py
index d9c1109850e..50b54b2aa6b 100644
--- a/src/sage_docbuild/utils.py
+++ b/src/sage_docbuild/utils.py
@@ -111,7 +111,7 @@ def build_many(target, args, processes=None):
* When PARI is built with multi-threading support, forking a Sage
process from a thread leaves the main Pari interface instance broken
- (see :trac:`26608#comment:38`).
+ (see :issue:`26608#comment:38`).
In the future this may be replaced by a generalized version of the more
robust parallel processing implementation from ``sage.doctest.forker``.
diff --git a/src/sage_setup/excepthook.py b/src/sage_setup/excepthook.py
index d316df06183..e5206d9c082 100644
--- a/src/sage_setup/excepthook.py
+++ b/src/sage_setup/excepthook.py
@@ -7,7 +7,7 @@ def excepthook(*exc):
messages from ``sage-spkg``.
In particular, ``build/make/install`` will recognize "sage" as a failed
- package, see :trac:`16774`.
+ package, see :issue:`16774`.
"""
stars = '*' * 72