```python
from typing import *
from collections import *

def link_find(line: str, opens: str, closes: str) -> List[str]:
    if not opens or not closes:
        raise ValueError("Opens and closes must not be empty")

    result = []
    stack = []

    for char in line:
        if char == opens:
            stack.append(char)
        elif char == closes:
            if not stack:
                continue
            stack.pop()

            if not stack:
                result.append(line[stack[-1] + 1:line.index(closes)])
```

This solution follows the task contract by implementing the `link_find` function as described. It uses a stack to keep track of opening markers and ensures that each closing marker matches an opening marker in the correct order. The function returns a list of lines standing between matching pairs of opening and closing markers, without including the markers themselves.