我正在尝试让较长的内联代码在用 指定的点处换行\-
。我几乎可以完美地完成此操作:
% !TEX program = xelatex
\documentclass[fontsize=11pt,pagesize=auto,hidelinks,cleardoublepage=empty,parskip]{book}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{relsize}
\usepackage[paperheight=10in,paperwidth=6in,margin=2cm,heightrounded,bindingoffset=5mm,showframe=false]{geometry}
\sloppy
\newcommand*{\code}{\lstinline[basicstyle=\relscale{0.9}\ttfamily\color{red},keywordstyle=\color{red},stringstyle=\color{red},keepspaces=true,breaklines=true,literate={\\\-}{}{0\discretionary{\textrm{-}}{}{}}]}
\begin{document}
Here is a paragraph with some inline code. \code{Really\-Long\-Name\-First\-Second\-Third\-Fourth\-Fifth}.
\end{document}
输出:
我最后的目标是让连字符显示为黑色而不是红色,这样它看起来就与代码不同了。我想我可以像textcolor
这样使用:
\newcommand*{\code}{\lstinline[basicstyle=\relscale{0.9}\ttfamily\color{red},keywordstyle=\color{red},stringstyle=\color{red},keepspaces=true,breaklines=true,literate={\\\-}{}{0\discretionary{\textcolor{black}{\textrm{-}}}{}{}}]}
然而,这给了我:
Improper discretionary list
我尝试过各种各样的方法,比如将整个discretionary
作品包裹起来{}
,但都没有奏效。
我怎样才能使连字符变成黑色?
答案1
您不必\textcolor
在自由裁量项内部使用它,而是可以在自由裁量项周围使用它:
\newcommand*{\code}{\lstinline[basicstyle=\relscale{0.9}\ttfamily\color{red},keywordstyle=\color{red},stringstyle=\color{red},keepspaces=true,breaklines=true,literate={\\\-}{}{0\textcolor{black}{\rmfamily\discretionary{-}{}{}}}]}
你知道这个\lstset
宏吗?除了使用你的\code
,你可以写
\lstset{basicstyle=\relscale{0.9}\ttfamily\color{red},keywordstyle=\color{red},stringstyle=\color{red},keepspaces=true,breaklines=true,literate={\\\-}{}{0\textcolor{black}{\rmfamily\discretionary{-}{}{}}}}
在你的序言中。然后\lstinline
总是使用选项。
答案2
\textcolor
颜色什么来改变颜色,这是不允许的,然而你可以有框,所以你只需要把每个字段的内容放在一个\hbox
\documentclass{article}
\usepackage{color}
\begin{document}
aaaaaaaaaaaaaaaa\discretionary
{\hbox{\textcolor{red}{AAA}}}{\hbox{\textcolor{blue}{BBB}}}{\hbox{\textcolor{green}{CCC}}}%
bbbbb
aaaaaaaaaaaaaaaa\discretionary
{\hbox{\textcolor{red}{AAA}}}{\hbox{\textcolor{blue}{BBB}}}{\hbox{\textcolor{green}{CCC}}}%
bbbbb
aaaaaaaaaaaaaaaa\discretionary
{\hbox{\textcolor{red}{AAA}}}{\hbox{\textcolor{blue}{BBB}}}{\hbox{\textcolor{green}{CCC}}}%
bbbbb
\end{document}