diff --git a/unsupported/Eigen/CXX11/src/Tensor/README.md b/unsupported/Eigen/CXX11/src/Tensor/README.md
index 3df1516..45a9454 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/README.md
+++ b/unsupported/Eigen/CXX11/src/Tensor/README.md
@@ -92,7 +92,7 @@
 
 #### Class TensorRef
 
-See [Assigning to a TensorRef.](#assigning-to-a-tensorref)
+See **Assigning to a `TensorRef`**.
 
 ## Accessing Tensor Elements
 
@@ -602,8 +602,8 @@
 A few operations provide `dimensions()` directly,
 e.g. `TensorReslicingOp`.  Most operations defer calculating dimensions
 until the operation is being evaluated.  If you need access to the dimensions
-of a deferred operation, you can wrap it in a TensorRef (see 
-[Assigning to a TensorRef.](#assigning-to-a-tensorref)), which provides 
+of a deferred operation, you can wrap it in a `TensorRef` (see
+**Assigning to a TensorRef** above), which provides
 `dimensions()` and `dimension()` as above.
 
 `TensorRef` can also wrap the plain `Tensor` types, so this is a useful idiom in
@@ -635,7 +635,7 @@
 Eigen::TensorFixedSize<float, Sizes<3, 4>> a;
 std::cout << "Rank: " << a.rank() << endl;
 // Rank: 2
-std::cout << "NumRows: " << a.dimension(0) 
+std::cout << "NumRows: " << a.dimension(0)
           << " NumCols: " << a.dimension(1) << endl;
 // NumRows: 3 NumCols: 4
 ```
@@ -848,7 +848,7 @@
 returned by the method.
 
 The chain of Operation is evaluated lazily, typically when it is assigned to a
-tensor.  See [Controlling When Expression are Evaluated](#controlling-when-expression-are-evaluated) for more details about
+tensor.  See **Controlling When Expression are Evaluated** for more details about
 their evaluation.
 
 ### (Operation) constant(const Scalar& val)
@@ -858,7 +858,7 @@
 
 This is useful, for example, when you want to add or subtract a constant from a
 tensor, or multiply every element of a tensor by a scalar.
-However, such operations can also be performed using operator overloads (see [operator+](#operation-operator-scalar-s)).
+However, such operations can also be performed using operator overloads (see `operator+`).
 
 
 ```cpp
@@ -927,7 +927,7 @@
 // a
 // 1 1 1
 // 1 1 1
-// 
+//
 // b
 // -1 -1 -1
 // -1 -1 -1
@@ -1010,7 +1010,7 @@
 // a
 // 0   1   8
 // 27  64 125
-// 
+//
 // b
 // 0 1 2
 // 3 4 5
@@ -1031,7 +1031,7 @@
 // a
 // 1 2 3
 // 4 5 6
-// 
+//
 // scaled_a
 // 2  4  6
 // 8 10 12
@@ -1048,8 +1048,8 @@
 ### (Operation) operator% (Scalar s)
 Computes the element-wise modulus (remainder) of each tensor element divided by `s`
 
-**Only integer types are supported.**  
-For floating-point tensors, implement a [unaryExpr](#operation-unaryexprcustomunaryop-func) using `std::fmod`.
+**Only integer types are supported.**
+For floating-point tensors, implement a `unaryExpr` using `std::fmod`.
 
 ### (Operation)  cwiseMax(Scalar threshold)
 Returns the coefficient-wise maximum between two tensors.
@@ -1203,10 +1203,10 @@
  * `operator>=(const OtherDerived& other)`
  * `operator==(const OtherDerived& other)`
  * `operator!=(const OtherDerived& other)`
- 
+
  as well as bitwise operators:
 
- * `operator&(const OtherDerived& other)` 
+ * `operator&(const OtherDerived& other)`
  * `operator|(const OtherDerived& other)`
  * `operator^(const OtherDerived& other)`
 
@@ -1448,7 +1448,7 @@
 
 ### (Operation) argmin(const Dimensions& reduction_dim)
 ### (Operation) argmin()
-See [argmax](#operation-argmaxconst-dimensions-reduction_dim)
+See `argmax`.
 
 ### (Operation) reduce(const Dimensions& reduction_dims, const Reducer& reducer)
 
@@ -1953,7 +1953,7 @@
 
 ### (Operation) roll(const Rolls& shifts)
 
-Returns a tensor with the elements **circularly shifted** (like bit rotation) along one or more dimensions.  
+Returns a tensor with the elements **circularly shifted** (like bit rotation) along one or more dimensions.
 
 For each dimension `i`, the content is shifted by `shifts[i]` positions:
 
@@ -2277,7 +2277,7 @@
 ```
 
 ### (Operation)     eval()
-See [Calling eval()](#calling-eval)
+See **Calling eval()**.
 
 
 
@@ -2340,7 +2340,7 @@
 
 Similarly, the inner product of 2 1d tensors (through contractions) returns a 0d tensor.
 
-The scalar value can be extracted as explained in [Reduction along all dimensions](#reduction-along-all-dimensions).
+The scalar value can be extracted as explained in **Reduction along all dimensions**.
 
 
 ## Limitations
@@ -2349,4 +2349,4 @@
     compiler that supports cxx11. It is limited to only 5 for older compilers.
 *   The `IndexList` class requires a cxx11 compliant compiler. You can use an
     array of indices instead if you don't have access to a modern compiler.
-*   On GPUs only floating point values are properly tested and optimized for.
\ No newline at end of file
+*   On GPUs only floating point values are properly tested and optimized for.
