![避免文件扩展名出现换行符](https://linux22.com/image/316988/%E9%81%BF%E5%85%8D%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%E5%87%BA%E7%8E%B0%E6%8D%A2%E8%A1%8C%E7%AC%A6.png)
我制作了一个系统来列出大量 LaTeX 文件,我想包含所有文件的路径,以便能够快速复制粘贴。这些路径可能很长,调整一些设置后,我得到了以下设置,它适用于大多数路径:
\documentclass{article}
\usepackage{url}
\begin{document}
\begin{sloppypar}
\noindent\path{C:/Folder/Subfolder/Subsubfolder/EvenMoreSubfoldernames/filename.tex}
\end{sloppypar}
\end{document}
这将为我的大多数文件提供良好的换行符。在这个特定示例中(以及我拥有的一些实际文件),换行符仅在文件扩展名处,因此我们将得到
C:/Folder/Subfolder/Subsubfolder/EvenMoreSubfoldernames/filename
.tex
作为输出。是否可以避免在文件扩展名处换行?路径中的其他地方不应该有点,因此避免在点处换行也是可行的。我最初使用Steven B. Segletes 的回答在这里和\texttt
,但这不与sloppypar
环境相结合,因此通常在破裂之前进入边缘。
总之:
\url
是否可以使用或来避免文件路径扩展名处的换行符\texttt
?
答案1
只需在答案中抑制textttt
换行的可能性即可.
。
\documentclass[a4paper]{article}
\renewcommand{\texttt}[1]{%
\begingroup
\ttfamily
\begingroup\lccode`~=`/\lowercase{\endgroup\def~}{/\discretionary{}{}{}}%
\begingroup\lccode`~=`[\lowercase{\endgroup\def~}{[\discretionary{}{}{}}%
%\begingroup\lccode`~=`.\lowercase{\endgroup\def~}{.\discretionary{}{}{}}%
% \catcode`/=\active\catcode`[=\active\catcode`.=\active
\catcode`/=\active\catcode`[=\active
\scantokens{#1\noexpand}%
\endgroup
}
\begin{document}
\begin{sloppypar}
\noindent\texttt{C:/Folder/Subfolder/Subsubfolder/EvenMoreSubfoldernames/filename.tex}
\end{sloppypar}
\end{document}
答案2
以下是另一种方法,调整行为\url
:
\documentclass{article}
\usepackage{url}
\def\UrlBreaks{\do\@\do\\\do\/\do\!\do\_\do\|\do\;\do\>\do\]%
\do\)\do\,\do\?\do\&\do\'\do+\do\=\do\#}%
\begin{document}
\begin{sloppypar}
\noindent\path{C:/Folder/Subfolder/Subsubfolder/EvenMoreSubfoldernames/filename.tex}
\end{sloppypar}
\end{document}
\def\UrlBreaks
删除了开头的行(实际上分成了 2 行) url.sty
,并\do\.
删除了 。它在这里的作用是重新定义可以断开 URL 以排除句号的字符列表。