### Checked other resources

- [X] I added a very descriptive title to this issue.
- [X] I searched the LangChain documentation with the integrated search.
- [X] I used the GitHub search to find a similar question and didn't find it.
- [X] I am sure that this is a bug in LangChain rather than my code.
- [X] The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).

### Example Code

### Example Code to Reproduce
```python
from langchain.textsplitters import MarkdownHeaderTextSplitter

# Sample Markdown input
markdown_text = """
# My Heading

This is a paragraph with some detailed explanation.

This is another separate paragraph.
"""

# Initialize and apply the text splitter
splitter = MarkdownHeaderTextSplitter(headers_to_split_on=[('#', 'Header 1')])
result = splitter.split_text(markdown_text)
print(result)
```

### Expected Behavior
The expected behavior would be to keep the paragraph breaks as they are crucial for subsequent text manipulation tasks that may rely on the structure conveyed by separate paragraphs:
```python
[Document(page_content='This is a paragraph with some detailed explanation.\n\nThis is another separate paragraph.', metadata={'Header 1': 'My Heading'})]
```

### Actual Behavior
Currently, the text after being processed by `MarkdownHeaderTextSplitter` loses paragraph distinctions, flattening into line breaks:
```python
[Document(page_content='This is a paragraph with some detailed explanation.\nThis is another separate paragraph.', metadata={'Header 1': 'My Heading'})]
```

This issue affects not only readability but also the downstream processing capabilities that require structured and clearly delineated text for effective analysis and feature extraction.


### Error Message and Stack Trace (if applicable)

_No response_

### Description

The current implementation of `MarkdownHeaderTextSplitter` in LangChain notably [splits on text on `/n`](https://github.com/relston/langchain/blob/d268587cbadded8cf1a3d67546afafe5db0690c5/libs/text-splitters/langchain_text_splitters/markdown.py#L96) and [strips out white space](https://github.com/relston/langchain/blob/d268587cbadded8cf1a3d67546afafe5db0690c5/libs/text-splitters/langchain_text_splitters/markdown.py#L111) from each line when processing Markdown text. This removal of white spaces and paragraph separators (`\n\n`) directly impacts further text splitting and processing strategies, as it disrupts the natural paragraph structure integral to most textual analyses and transformations.


### Other Examples
The white-space-stripping implementation of this text splitter also has been previously identified to be problematic by other users use-cases, as evidenced by issues [#20823](https://github.com/langchain-ai/langchain/issues/20823) and [#19436](https://github.com/langchain-ai/langchain/issues/19436).

### System Info

N/A
MarkdownHeaderTextSplitter flattens Paragraphs separators into single line breaks
This is a GitHub Issue
repo:langchain
owner:hwchase17
Title : MarkdownHeaderTextSplitter flattens Paragraphs separators into single line breaks
Issue date:

--- start body ---
### Checked other resources

- [X] I added a very descriptive title to this issue.
- [X] I searched the LangChain documentation with the integrated search.
- [X] I used the GitHub search to find a similar question and didn't find it.
- [X] I am sure that this is a bug in LangChain rather than my code.
- [X] The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).

### Example Code

### Example Code to Reproduce
```python
from langchain.textsplitters import MarkdownHeaderTextSplitter

# Sample Markdown input
markdown_text = """
# My Heading

This is a paragraph with some detailed explanation.

This is another separate paragraph.
"""

# Initialize and apply the text splitter
splitter = MarkdownHeaderTextSplitter(headers_to_split_on=[('#', 'Header 1')])
result = splitter.split_text(markdown_text)
print(result)
```

### Expected Behavior
The expected behavior would be to keep the paragraph breaks as they are crucial for subsequent text manipulation tasks that may rely on the structure conveyed by separate paragraphs:
```python
[Document(page_content='This is a paragraph with some detailed explanation.\n\nThis is another separate paragraph.', metadata={'Header 1': 'My Heading'})]
```

### Actual Behavior
Currently, the text after being processed by `MarkdownHeaderTextSplitter` loses paragraph distinctions, flattening into line breaks:
```python
[Document(page_content='This is a paragraph with some detailed explanation.\nThis is another separate paragraph.', metadata={'Header 1': 'My Heading'})]
```

This issue affects not only readability but also the downstream processing capabilities that require structured and clearly delineated text for effective analysis and feature extraction.


### Error Message and Stack Trace (if applicable)

_No response_

### Description

The current implementation of `MarkdownHeaderTextSplitter` in LangChain notably [splits on text on `/n`](https://github.com/relston/langchain/blob/d268587cbadded8cf1a3d67546afafe5db0690c5/libs/text-splitters/langchain_text_splitters/markdown.py#L96) and [strips out white space](https://github.com/relston/langchain/blob/d268587cbadded8cf1a3d67546afafe5db0690c5/libs/text-splitters/langchain_text_splitters/markdown.py#L111) from each line when processing Markdown text. This removal of white spaces and paragraph separators (`\n\n`) directly impacts further text splitting and processing strategies, as it disrupts the natural paragraph structure integral to most textual analyses and transformations.


### Other Examples
The white-space-stripping implementation of this text splitter also has been previously identified to be problematic by other users use-cases, as evidenced by issues [#20823](https://github.com/langchain-ai/langchain/issues/20823) and [#19436](https://github.com/langchain-ai/langchain/issues/19436).

### System Info

N/A
--- end body ---
