我正在尝试用连字符连接长关键字,如示例中所示:
\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 发生的情况。