```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 process.
    
    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()
```