Latex 能否自动在整个文档中的某个特殊字符(下划线)处断词?

Latex 能否自动在整个文档中的某个特殊字符(下划线)处断词?

我有一个包含许多类似表格的大型文档。我希望将文件名分成几行,以便它们适合列。

在这种情况下,有没有办法告诉 Latex 它可以以某个字符断开所有单词_?(最好不要引入连字符)

\documentclass{article}
\begin{document}

\begin{tabular}{p{.12\textwidth}|l|p{.12\textwidth}|l|l}
\hline
Filename & Balanceo & Clase mayoritaria & Result & test \\ \hline
fase\_1\_y\_2\_data.csv & Sin balanceo & 84 & 84.9 & 85.0 \\ \hline
fase\_1\_y\_3\_data.csv & Upsample & 50 en train y 84 en test bla bla bla bla & 80.1 & 72.7 \\ \hline
fase\_8\_y\_2\_data.csv & Downsample & 50 en train y 84 en test & 50.2 & 84.9 \\ \hline
\end{tabular}

\end{document}

表格的第一段列溢出

答案1

我创建了一个在、和\url上中断的宏(注意:在参数中使用文字,而不是)。/.__\_

我还将第三列设置为右边参差不齐。

\documentclass{article}
\usepackage{array}
\catcode`_=12 
\newcommand{\url}[1]{%
  \begingroup
  \ttfamily
  \begingroup\lccode`~=`/\lowercase{\endgroup\def~}{/\penalty0 }%
  \begingroup\lccode`~=`.\lowercase{\endgroup\def~}{.\penalty0 }%
  \begingroup\lccode`~=`_\lowercase{\endgroup\def~}{_\penalty0 }%
  \catcode`/=\active\catcode`.=\active\catcode`_=\active
  \scantokens{#1\noexpand}%
  \endgroup
}
\catcode`_=8 

\begin{document}

\begin{tabular}{p{.12\textwidth}|l|>{\raggedright}p{.12\textwidth}|l|l}
\hline
Filename & Balanceo & Clase mayoritaria & Result & test \\ \hline
\url{fase_1_y_2_data.csv} & Sin balanceo & 84 & 84.9 & 85.0 \\ \hline
\url{fase_1_y_3_data.csv} & Upsample & 50 en train y 84 en test bla bla bla bla & 80.1 & 72.7 \\ \hline
\url{fase_8_y_2_data.csv} & Downsample & 50 en train y 84 en test & 50.2 & 84.9 \\ \hline
\end{tabular}

\end{document}

在此处输入图片描述

答案2

我建议您加载arrayxurl包并将文件名括在\url语句中。这样,您就不必转义下划线字符。

在此处输入图片描述

\documentclass{article}
\usepackage[T1]{fontenc} % for heftier underscore characters
\usepackage{array,xurl}
\begin{document}

\begin{tabular}{>{\raggedright}p{.16\textwidth}|l|
                >{\raggedright}p{.24\textwidth}|l|l}
\hline
Filename & Balanceo & Clase mayoritaria & Result & test \\ \hline
\url{fase_1_y_2_data.csv} & Sin balanceo & 84 & 84.9 & 85.0 \\ \hline
\url{fase_1_y_3_data.csv} & Upsample & 50 en train y 84 en test bla bla bla bla & 80.1 & 72.7 \\ \hline
\url{fase_8_y_2_data.csv} & Downsample & 50 en train y 84 en test & 50.2 & 84.9 \\ \hline
\end{tabular}
\end{document}

答案3

这是一个使用包\url中的命令的可能解决方案url。如果您也使用该hyperref包,您可能希望用tabularNoHyper包包围您的,以防止为每个 url 创建超链接。我还添加了一个新的左对齐列类型,而不是原来的对齐p类型列。

在此处输入图片描述

\documentclass{article}
\usepackage{array} % for the new column type
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1\textwidth}} 
\usepackage{url}\urlstyle{same}
\usepackage{hyperref}
\begin{document}
\begin{NoHyper} % only include that if you also use the hyperref package
\begin{tabular}{L{0.12}|l|L{0.12}|l|l}
\hline
Filename & Balanceo & Clase mayoritaria & Result & test \\ \hline
\url{fase_1_y_2_data.csv} & Sin balanceo & 84 & 84.9 & 85.0 \\ \hline
\url{fase_1_y_3_data.csv} & Upsample & 50 en train y 84 en test bla bla bla bla & 80.1 & 72.7 \\ \hline
\url{fase_8_y_2_data.csv} & Downsample & 50 en train y 84 en test & 50.2 & 84.9 \\ \hline
\end{tabular}
\end{NoHyper}
\end{document}

相关内容