```python
def tag_open(marker: str) -> str:
    """
    Extracts the name inside a marker written between angle brackets,
    dropping a leading slash if present.
    
    Args:
        marker (str): The marker string to parse.

    Returns:
        str: The name inside the marker.

    Raises:
        ValueError: If the marker is not wrapped in angle brackets.
    """
    if not marker.startswith('<') or not marker.endswith('>'):
        raise ValueError("Marker must be wrapped in angle brackets.")
    
    # Remove leading and trailing angle brackets
    marker = marker[1:-1]
    
    # Drop leading slash if present
    if marker.startswith('/'):
        marker = marker[1:]
    
    return marker

def tag_pair(opening: str, closing: str) -> bool:
    """
    Checks if two markers name the same thing, ignoring case.

    
    Args:
        opening (str): The opening marker string.
        closing (str): The closing marker string.

    Returns:
        bool: True if the markers name the same thing, False otherwise.
    """
    return opening.lower() == closing.lower()
```