@@ -445,70 +445,64 @@ function Base.summary(io::IO, ψ::FiniteMPS)
445445end
446446function Base. show (io:: IO , mime:: MIME"text/plain" , ψ:: FiniteMPS )
447447 summary (io, ψ)
448- print (io, " with center $(ψ. center) " )
449- get (io, :compact , false ):: Bool && return nothing
450- println (io, " :" )
448+
449+ if get (io, :compact , false )
450+ print (io, " center: " , ψ. center, " \t maxdim: " , maximum (dim, left_virtualspace (ψ)))
451+ return nothing
452+ end
453+
454+ println (io, " :\n center: " , ψ. center, " \t maxdim: " , maximum (dim, left_virtualspace (ψ)))
455+
451456 io = IOContext (io, :typeinfo => spacetype (ψ), :compact => true )
452457 charset = (; start = " ┌" , mid = " ├" , stop = " └" , ver = " │" , dash = " ──" )
453- limit = get (io, :limit , true ):: Bool
454- half_screen_rows = limit ? div (displaysize (io)[1 ] - 8 , 4 ) : typemax (Int)
455458
459+ limit = get (io, :limit , true ):: Bool
460+ half_screen_rows = limit ? div (displaysize (io)[1 ] - 2 , 4 ) : typemax (Int)
456461 L = length (ψ)
462+
463+ if L <= 2 * half_screen_rows # everything fits!
464+ half_screen_rows = typemax (Int)
465+ end
466+
467+
468+ # special handling of edge spaces => don't print if trivial
469+ Vright = right_virtualspace (ψ, L)
470+ right_trivial = Vright == oneunit (Vright)
471+ Vleft = left_virtualspace (ψ, 1 )
472+ left_trivial = Vleft == oneunit (Vleft)
473+
474+
475+ right_trivial || println (io, " │ " , Vright)
457476 for i in reverse (1 : L)
458- if i < half_screen_rows || i > L - half_screen_rows
459- Vr = right_virtualspace (ψ, i)
460- if i == L && Vr == oneunit (Vr)
461- println (io, " ┌ ─[$i ]─ " , physicalspace (ψ, i))
477+ if i > L - half_screen_rows
478+ if i == L
479+ connector = right_trivial ? " ┌ " : " ├ "
480+ println (io, connector, " ─[$i ]─ " , physicalspace (ψ, i))
462481 elseif i == 1
463- println (io, " │ " , Vr)
464- Vl = left_virtualspace (ψ, 1 )
465- if Vl == oneunit (Vr)
466- println (io, " └─[$i ]─ " , physicalspace (ψ, i))
467- else
468- println (io, " ├─[$i ]─ " , physicalspace (ψ, i))
469- println (io, " │ " , Vl)
470- end
482+ connector = left_trivial ? " └" : " ├"
483+ println (io, connector, " ─[$i ]─ " , physicalspace (ψ, i))
471484 else
472- println (io, " │ " , Vr)
473485 println (io, " ├─[$i ]─ " , physicalspace (ψ, i))
474486 end
487+
488+ i != 1 && println (io, " │ " , left_virtualspace (ψ, i))
475489 elseif i == half_screen_rows
476490 println (io, " │ ⋮" )
477- end
478- end
479-
480- return nothing
481- for site in HalfInt .(reverse ((1 / 2 ): (1 / 2 ): (L + 1 / 2 )))
482- if site < half_screen_rows || site > L - half_screen_rows
483- char = if isinteger (site)
484- site == 1 ? charset. stop : (site == L && site > c) ? charset. start : charset. mid
485- else
486- site == HalfInt (L + 1 / 2 ) ? charset. start : site == HalfInt (1 / 2 ) ? charset. stop : charset. ver
487- end
488- if site > c # ARs
489- if isinteger (site)
490- print (io, char, charset. dash, " AR[$(Int (site)) ]: " , space (ψ. ARs[Int (site)]))
491- site == 1 || println (io)
492- end
493- elseif site == c # AC or C
494- if isinteger (c) # center is an AC
495- print (io, char, charset. dash, " AC[$(Int (site)) ]: " , space (ψ. ACs[Int (site)]))
496- site == 1 || println (io)
497- else # center is a bond-tensor
498- print (io, char, " C[$(Int (site - 1 / 2 )) ]: " , space (ψ. Cs[Int (site + 1 / 2 )]))
499- site == 1 || println (io)
500- end
491+ elseif i < half_screen_rows
492+ i != L && println (io, " │ " , right_virtualspace (ψ, i))
493+ if i == L
494+ connector = right_trivial ? " ┌" : " ├"
495+ println (io, connector, " ─[$i ]─ " , physicalspace (ψ, i))
496+ elseif i == 1
497+ connector = left_trivial ? " └" : " ├"
498+ println (io, connector, " ─[$i ]─ " , physicalspace (ψ, i))
501499 else
502- if isinteger (site)
503- print (io, char, charset. dash, " AL[$(Int (site)) ]: " , space (ψ. ALs[Int (site)]))
504- site == 1 || println (io)
505- end
500+ println (io, " ├─[$i ]─ " , physicalspace (ψ, i))
506501 end
507- elseif site == half_screen_rows
508- println (io, charset. ver, " ⋮\n " , charset. ver)
509- site == 1 || println (io)
510502 end
511503 end
504+ left_trivial || println (io, " │ " , Vleft)
505+
512506 return nothing
513507end
514508
0 commit comments