bpo-26701: Add documentation for __trunc__ (GH-6022)

`int` fails back to `__trunc__` is `__int__` isn't defined, so cover
that in the docs.
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index 3ddd280..c3b6385 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -731,8 +731,11 @@
 
    Return an integer object constructed from a number or string *x*, or return
    ``0`` if no arguments are given.  If *x* is a number, return
-   :meth:`x.__int__() <object.__int__>`.  For floating point numbers, this
-   truncates towards zero.
+   :meth:`x.__int__() <object.__int__>`. If *x* defines
+   :meth:`x.__trunc__() <object.__trunc__>` but not
+   :meth:`x.__int__() <object.__int__>`, then return
+   if :meth:`x.__trunc__() <object.__trunc__>`.  For floating point numbers,
+   this truncates towards zero.
 
    If *x* is not a number or if *base* is given, then *x* must be a string,
    :class:`bytes`, or :class:`bytearray` instance representing an :ref:`integer
diff --git a/Doc/library/math.rst b/Doc/library/math.rst
index 55eb41b..33aec57 100644
--- a/Doc/library/math.rst
+++ b/Doc/library/math.rst
@@ -203,7 +203,7 @@
 
    Return the :class:`~numbers.Real` value *x* truncated to an
    :class:`~numbers.Integral` (usually an integer). Delegates to
-   ``x.__trunc__()``.
+   :meth:`x.__trunc__() <object.__trunc__>`.
 
 
 Note that :func:`frexp` and :func:`modf` have a different call/return pattern