本地对带下划线的单词进行连字符连接

本地对带下划线的单词进行连字符连接

我正在尝试用连字符连接长关键字,如示例中所示:

\documentclass[10pt]{article}
\usepackage{underscore}

\begin{document}

\pagestyle{empty}

\parbox{1pt}{TESTSTRING\_TESTSTRING\_HYPHENATION}
\\\\

%\begin{figure}[here]
%\centerline{\includegraphics*[width=0.8\paperwidth]{/pictures/regular_testname.png}}
%\centerline{\includegraphics*[width=0.8\paperwidth]{/pictures/escaped\_testname.png}}
%\end{figure}

\end{document}

在此处输入图片描述

我试过并且没有成功。如果我取消注释示例中的图片,underscore-package 会产生问题,因为文件名中的下划线不再被正确解释。如果不使用此包,图片可以插入,但我的字符串无法连字符。

您是否知道如何正确且仅在局部使用连字符,例如像那种:TESTSTRING\myUnderTESTSTRING\myUnderHYPHENATION

并且如何控制在对字符串进行连字符连接时不写连字符? 这将是更可取的。

附带问题:在我的例子中,为什么字符串的第一部分没有用连字符连接?

答案1

也许像这样的事情会有所帮助,而无需使用underscore您似乎更喜欢的包(不使用它)。 它激活连字符 with并恢复with\newuson的原始定义。 通过这种开/关机制,您可以控制修改的范围。\_\newusoff

此外,如果我正确理解了这个问题的话,下划线的“连字符”没有破折号,这似乎也是所需要的。

无论如何,为了使段落的第一个单词连字,\hspace{0pt}需要用 a 来开始该段落。

\documentclass{article}
%\usepackage{underscore}
\textwidth0pt
\let\svus\_
\newcommand\newuson{\def\_{\svus\allowbreak\hspace{0pt}}}
\newcommand\newusoff{\let\_\svus}
\begin{document}
TESTSTRING\_TESTSTRING\_HYPHENATION

\newuson
\hspace{0pt}TESTSTRING\_TESTSTRING\_HYPHENATION

\newusoff
TESTSTRING\_TESTSTRING\_HYPHENATION
\end{document}

在此处输入图片描述

答案2

如果您希望将带有下划线的长字符串作为宏的参数,那么很容易:

\documentclass[10pt]{article}

\DeclareRobustCommand\Name[1]{{%
  \let\_\hyphenationunderscore#1%
}}
\newcommand{\hyphenationunderscore}{%
  \textunderscore\nobreak\hspace{0pt}%
}

\begin{document}

\pagestyle{empty}

\parbox{1pt}{
  \hspace{0pt}%
  \Name{TESTSTRING\_TESTSTRING\_HYPHENATION}
}

\end{document}

在此处输入图片描述

您还可以\_全局重新定义:

\documentclass[10pt]{article}

\renewcommand{\_}{%
  \textunderscore\nobreak\hspace{0pt}%
}

\begin{document}

\pagestyle{empty}

\parbox{1pt}{
  \hspace{0pt}%
  TESTSTRING\_TESTSTRING\_HYPHENATION
}

\end{document}

或者,您可以_激活:

\documentclass[10pt]{article}

\newcommand{\hyphenationunderscore}{%
  \textunderscore\nobreak\hspace{0pt}%
}
\catcode`_=\active
\protected\def_{\ifmmode\sb\else\hyphenationunderscore\fi}

\begin{document}

\pagestyle{empty}

\parbox{1pt}{
  \hspace{0pt}%
  TESTSTRING_TESTSTRING_HYPHENATION
}

\end{document}

请注意,如果没有,则\hspace{0pt}在 中没有连字符\parbox,因为 TeX 不会对前面没有粘连符的单词进行连字符处理。

如果你还想在下划线后换行,请改为\nobreak整个\linebreak[0]下划线。例如,第二个解决方案变成

\documentclass[10pt]{article}
\usepackage[T1]{fontenc}

\renewcommand{\_}{%
  \textunderscore\linebreak[0]\hspace{0pt}%
}

\begin{document}

\pagestyle{empty}

  TESTSTRING\_TESTSTRING\_HYPHENATION

\parbox{1pt}{
  \hspace{0pt}%
  TESTSTRING\_TESTSTRING\_HYPHENATION
}

\end{document}

这里的输出还显示了 T1 发生的情况。

在此处输入图片描述

相关内容