Preview:
$usuarios = User::with(['persona', 'persona.genero', 'institutos'])
              ->select('users.*')
              ->paginate(5);

Alternativas:
Paginar con parámetro desde request (para que el cliente pueda cambiar el tamaño de página):

$usuarios = User::with(['persona', 'persona.genero', 'institutos'])
              ->select('users.*')
              ->paginate(request('per_page', 5)); // 5 por defecto

Simple paginación (solo next/previous, sin números de página):
$usuarios = User::with(['persona', 'persona.genero', 'institutos'])
              ->select('users.*')
              ->simplePaginate(5);

Cómo usar en la vista:
En tu controlador:
return view('tu_vista', ['usuarios' => $usuarios]);

En tu vista Blade:
@foreach($usuarios as $usuario)
    <!-- Mostrar datos del usuario -->
@endforeach

{{ $usuarios->links() }} <!-- Esto mostrará los enlaces de paginación -->
  
  Diferencia con paginate():
paginate() es más completo (maneja automáticamente la lógica de paginación y genera enlaces)

take()/limit() con skip() es más manual pero te da control directo
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter