LaTeX如何忽略特殊字符并实现长文本自动换行?
解决LaTeX中含特殊字符长文本的自动换行问题
针对你遇到的「含特殊字符的长文本既要忽略特殊字符,又要自动换行,同时避免超链接误包含页码」的需求,推荐以下几种实用方案:
方案一:用\nolinkurl替代\url或\verb
hyperref包自带的\nolinkurl命令完美适配需求:它会自动忽略URL中的特殊字符(比如%、&、_),支持自动换行,且不会生成可点击的超链接,自然也就不存在页码被误包含的问题。
修改后的测试代码:
\documentclass{article} \usepackage{hyperref} \begin{document} \title{Title} \maketitle \section{Section1} \textbf{URL}: \nolinkurl{https://xxxxxxxxxxxxx/xxxxxxxxx/xxxxx%20&%20xxxxxxxxxxxx%2xxxxxxxxxxxxxxxxx%20(2024)_Just%20Accepted-xxxxxxxxxxxxxxxxxx.pdf} \end{document}
方案二:使用verbatimbox包实现可换行的verb效果
如果更习惯\verb的使用逻辑,verbatimbox包可以让verb内容支持自动换行。需要先加载包,再用\verbbox定义内容,最后调用输出:
\documentclass{article} \usepackage{verbatimbox} \begin{document} \title{Title} \maketitle \section{Section1} \verbbox[\small]{https://xxxxxxxxxxxxx/xxxxxxxxx/xxxxx%20&%20xxxxxxxxxxxx%2xxxxxxxxxxxxxxxxx%20(2024)_Just%20Accepted-xxxxxxxxxxxxxxxxxx.pdf} \textbf{URL}: \theverbbox \end{document}
注:[\small]可选,用来调整字号适配长文本,也可以去掉。
方案三:借助listings包设置可换行的文本块
listings包原本用于代码高亮,也能用来处理含特殊字符的长文本,通过设置参数让内容自动换行、忽略特殊字符:
\documentclass{article} \usepackage{listings} % 基础设置:取消高亮,支持换行,忽略特殊字符 \lstset{ basicstyle=\ttfamily, breaklines=true, columns=fullflexible, escapeinside={@}{@} % 可选,用来插入非verb内容 } \begin{document} \title{Title} \maketitle \section{Section1} \textbf{URL}: \lstinline{https://xxxxxxxxxxxxx/xxxxxxxxx/xxxxx%20&%20xxxxxxxxxxxx%2xxxxxxxxxxxxxxxxx%20(2024)_Just%20Accepted-xxxxxxxxxxxxxxxxxx.pdf} \end{document}
以上三种方案都能满足「忽略特殊字符+自动换行」的核心需求,其中方案一最为简洁,推荐优先尝试。
内容的提问来源于stack exchange,提问作者Albert Yang
相关产品推荐
相关产品推荐

