在我的文档中显示可复制粘贴且结构良好的 BibTeX 密钥

在我的文档中显示可复制粘贴且结构良好的 BibTeX 密钥

语境:我想在文档开头插入 BibTeX 条目。因此我希望此代码片段满足两个条件:

  1. 易于复制粘贴(看到的代码 = 复制粘贴的代码)
  2. 看起来不错(使用制表符和空格启用代码片段的“结构化”)。

什么?使用标签格式化代码需要空格?!这简直是亵渎!

你不这么说吗?下面是代码片段的示例,以使事情更加明确:

@article{Turing1950,
⇥Title␣␣␣=␣{Computing machinery and intelligence},
⇥Author␣␣=␣{Turing, Alan~M.},
⇥Journal␣=␣{Mind},
⇥Year␣␣␣␣=␣{1950},
⇥Pages␣␣␣=␣{433--460},
⇥Volume␣␣=␣{59},
}

我在这里将用 完成的句法缩进Tab(这里用 表示)与仅为了美观而进行的缩进(即为了使所有=内容对齐)用 完成的缩进 Space (这里用 表示)区分开来

问题:我使用一个简单的lstlisting环境。结果看起来很棒,但是当我复制粘贴时,出现了不必要的换行符[参见 MWE 1]。

我也尝试了 Martin Monperrus 提出的解决方案他的网站。复制粘贴效果很好(没有不必要的换行符,但等号没有对齐),但外观却不然。[参见 MWE 2]。

listings我也测试了'设置的各种可能性column,但没有一个是完全令人满意的(见下文)。verbatim环境也不起作用(对于外观和复制粘贴)。

问题:如何在我的文档中显示可复制粘贴且结构良好的 BibTeX 密钥?


微波能量吸收 1

  • 代码:

    \documentclass{scrbook}
        \usepackage[utf8]{inputenc}
        \usepackage[T1]{fontenc}
        \usepackage{textcomp}
        \usepackage{listings}
            \lstset{%
                basicstyle=\ttfamily,
                tabsize=2,
                breaklines=true,
                breakindent=1em,
                upquote=true,
                columns=[c]fixed,
                literate={*}{{\char42}}1
                         {-}{{\char45}}1
            }
    \begin{document} 
    \begin{lstlisting}
    @article{Turing1950,
        Title   = {Computing machinery and intelligence},
        Author  = {Turing, Alan~M.},
        Journal = {Mind},
        Year    = {1950},
        Pages   = {433--460},
        Volume  = {59},
    }
    \end{lstlisting}
    \end{document}
    
  • 展示:
    在此处输入图片描述

  • 复制粘贴:

    @article { Turing1950 ,
    Title
    = { Computing machinery and intelligence } ,
    Author = { Turing , Alan ~ M .} ,
    Journal = { Mind } ,
    Year
    = {1950} ,
    Pages
    = {433 - - 460} ,
    Volume = {59} ,
    }
    

微波辐射计 2

  • 代码:

    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage{textcomp}
    \usepackage{listings}
    \lstset{ 
    %basicstyle=\ttfamily,% <----- make things even worse
    upquote=true,
    columns=fullflexible,
    literate={*}{{\char42}}1
             {-}{{\char45}}1
             {\ }{{\copyablespace}}1
    }
    
    \usepackage[space=true]{accsupp}
    % requires the latest version of package accsupp
    \newcommand{\copyablespace}{
        \BeginAccSupp{method=hex,unicode,ActualText=00A0}
    \ %
        \EndAccSupp{}
    }
    
    \begin{document} 
    \begin{lstlisting}
    @article{Turing1950,
        Title   = {Computing machinery and intelligence},
        Author  = {Turing, Alan~M.},
        Journal = {Mind},
        Year    = {1950},
        Pages   = {433--460},
        Volume  = {59},
    }
    \end{lstlisting}
    \end{document}
    
  • 展示:
    在此处输入图片描述

  • 复制粘贴:

    @article{Turing1950,
    Title       =   {Computing   machinery   and   intelligence},
    Author     =   {Turing,   Alan~M.},
    Journal   =   {Mind},
    Year         =   {1950},
    Pages       =   {433--460},
    Volume     =   {59},
    }
    

columns=fixed 复制粘贴 = ✘ | 显示 = ✔
columns=flexible 复制粘贴 = ✘ | 显示 = ✘ (year只会在复制粘贴时出错)
columns=spaceflexible 复制粘贴 = ✘ | 显示 = ✘ (year只会在复制粘贴时出错)
columns=fullflexible 复制粘贴 = ✘ | 显示 = ✘

相关内容