
예제에 제공된 것처럼 긴 키워드에 하이픈을 연결하려고 합니다.
\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}
TeX은 글루 앞에 붙지 않은 단어에 하이픈을 넣지 않기 때문에 \hspace{0pt}
에서 하이픈을 넣지 않는다는 점에 유의하세요 .\parbox
밑줄 이후에도 중단하려면 전체 \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에서 어떤 일이 발생하는지 보여줍니다.