Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
ca80d3cd
Commit
ca80d3cd
authored
Aug 18, 2014
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'albert-github-feature/bug_700510'
parents
8ddbaa7c
5d00fa58
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
65 additions
and
82 deletions
+65
-82
cite.cpp
src/cite.cpp
+64
-79
config.xml
src/config.xml
+1
-3
No files found.
src/cite.cpp
View file @
ca80d3cd
...
...
@@ -37,6 +37,8 @@ static const char *bib2xhtml_pl =
const
QCString
CiteConsts
::
fileName
(
"citelist"
);
const
QCString
CiteConsts
::
anchorPrefix
(
"CITEREF_"
);
const
QCString
bibTmpFile
(
"bibTmpFile_"
);
const
QCString
bibTmpDir
(
"bibTmpDir/"
);
//--------------------------------------------------------------------------
...
...
@@ -45,51 +47,6 @@ CiteDict::CiteDict(int size) : m_entries(size, FALSE)
m_entries
.
setAutoDelete
(
TRUE
);
}
static
QCString
getListOfBibFiles
(
const
QCString
&
sep
,
bool
namesOnly
)
{
QCString
result
;
QStrList
&
citeDataList
=
Config_getList
(
"CITE_BIB_FILES"
);
const
char
*
bibdata
=
citeDataList
.
first
();
while
(
bibdata
)
{
int
i
;
QCString
bibFile
=
bibdata
;
if
(
namesOnly
&&
bibFile
.
right
(
4
)
==
".bib"
)
// strip extension
{
bibFile
=
bibFile
.
left
(
bibFile
.
length
()
-
4
);
}
else
{
if
(
!
namesOnly
&&
bibFile
.
right
(
4
)
!=
".bib"
)
bibFile
+=
".bib"
;
}
if
((
i
=
bibFile
.
findRev
(
'/'
))
!=-
1
)
// strip path
{
bibFile
=
bibFile
.
mid
(
i
+
1
);
}
if
(
!
bibFile
.
isEmpty
())
{
if
(
namesOnly
)
// bare names
{
result
+=
bibFile
;
}
else
// add quotes for paths with spaces
{
result
+=
"
\"
"
+
bibFile
+
"
\"
"
;
}
bibdata
=
citeDataList
.
next
();
if
(
bibdata
)
{
result
+=
sep
;
}
}
else
{
bibdata
=
citeDataList
.
next
();
}
}
return
result
;
}
void
CiteDict
::
writeLatexBibliography
(
FTextStream
&
t
)
{
if
(
m_entries
.
isEmpty
())
...
...
@@ -108,7 +65,29 @@ void CiteDict::writeLatexBibliography(FTextStream &t)
"
\\
phantomsection
\n
"
"
\\
addcontentsline{toc}{"
<<
unit
<<
"}{"
<<
theTranslator
->
trCiteReferences
()
<<
"}
\n
"
"
\\
bibliographystyle{"
<<
style
<<
"}
\n
"
"
\\
bibliography{"
<<
getListOfBibFiles
(
","
,
TRUE
)
<<
"}
\n
"
"
\\
bibliography{"
;
QStrList
&
citeDataList
=
Config_getList
(
"CITE_BIB_FILES"
);
QCString
latexOutputDir
=
Config_getString
(
"LATEX_OUTPUT"
)
+
"/"
;
int
i
=
0
;
const
char
*
bibdata
=
citeDataList
.
first
();
while
(
bibdata
)
{
QCString
bibFile
=
bibdata
;
// Note: file can now have multiple dots
if
(
!
bibFile
.
isEmpty
()
&&
bibFile
.
right
(
4
)
!=
".bib"
)
bibFile
+=
".bib"
;
QFileInfo
fi
(
bibFile
);
if
(
fi
.
exists
())
{
if
(
!
bibFile
.
isEmpty
())
{
if
(
i
)
t
<<
","
;
i
++
;
t
<<
bibTmpFile
<<
QString
().
setNum
(
i
);
}
}
bibdata
=
citeDataList
.
next
();
}
t
<<
"}
\n
"
"
\n
"
;
}
...
...
@@ -186,47 +165,44 @@ void CiteDict::generatePage() const
f
.
writeBlock
(
bstData
,
bstData
.
length
());
f
.
close
();
// 4. for html we just copy the bib files to the output so that
// bibtex can find them without path (bibtex doesn't support path's
// with spaces!)
QList
<
QCString
>
tempFiles
;
tempFiles
.
setAutoDelete
(
TRUE
);
// 4. for all formats we just copy the bib files to as special output directory
// so bibtex can find them without path (bibtex doesn't support paths or
// filenames with spaces!)
// Strictly not required when only latex is generated
QStrList
&
citeDataList
=
Config_getList
(
"CITE_BIB_FILES"
);
QCString
bibOutputDir
=
outputDir
+
"/"
+
bibTmpDir
;
QCString
bibOutputFiles
=
""
;
QDir
thisDir
;
if
(
Config_getBool
(
"GENERATE_HTML"
))
thisDir
.
mkdir
(
bibOutputDir
);
const
char
*
bibdata
=
citeDataList
.
first
();
int
i
=
0
;
while
(
bibdata
)
{
// copy bib files to the latex output dir
QStrList
&
citeDataList
=
Config_getList
(
"CITE_BIB_FILES"
);
QCString
bibOutputDir
=
outputDir
+
"/"
;
QFileInfo
fo
(
bibOutputDir
);
const
char
*
bibdata
=
citeDataList
.
first
();
while
(
bibdata
)
QCString
bibFile
=
bibdata
;
if
(
!
bibFile
.
isEmpty
()
&&
bibFile
.
right
(
4
)
!=
".bib"
)
bibFile
+=
".bib"
;
QFileInfo
fi
(
bibFile
);
if
(
fi
.
exists
())
{
QCString
bibFile
=
bibdata
;
if
(
!
bibFile
.
isEmpty
()
&&
bibFile
.
right
(
4
)
!=
".bib"
)
bibFile
+=
".bib"
;
QFileInfo
fi
(
bibFile
);
if
(
fi
.
exists
()
&&
fi
.
dirPath
(
TRUE
)
!=
fo
.
absFilePath
())
{
if
(
!
bibFile
.
isEmpty
())
{
QCString
destFile
=
bibOutputDir
+
fi
.
fileName
().
data
();
copyFile
(
bibFile
,
destFile
);
tempFiles
.
append
(
new
QCString
(
destFile
));
}
}
else
if
(
!
fi
.
exists
())
if
(
!
bibFile
.
isEmpty
())
{
err
(
"bib file %s not found!
\n
"
,
bibFile
.
data
());
++
i
;
copyFile
(
bibFile
,
bibOutputDir
+
bibTmpFile
+
QCString
().
setNum
(
i
)
+
".bib"
);
bibOutputFiles
=
bibOutputFiles
+
" "
+
bibTmpDir
+
bibTmpFile
+
QCString
().
setNum
(
i
)
+
".bib"
;
}
bibdata
=
citeDataList
.
next
();
}
else
if
(
!
fi
.
exists
())
{
err
(
"bib file %s not found!
\n
"
,
bibFile
.
data
());
}
bibdata
=
citeDataList
.
next
();
}
Q
CString
oldDir
=
QDir
::
currentDirPath
().
utf8
();
Q
String
oldDir
=
QDir
::
currentDirPath
();
QDir
::
setCurrent
(
outputDir
);
// 5. run bib2xhtml perl script on the generated file which will insert the
// bibliography in citelist.doc
portable_system
(
"perl"
,
"
\"
"
+
bib2xhtmlFile
+
"
\"
"
+
getListOfBibFiles
(
" "
,
FALSE
)
+
"
\"
"
+
portable_system
(
"perl"
,
"
\"
"
+
bib2xhtmlFile
+
"
\"
"
+
bibOutputFiles
+
"
\"
"
+
citeListFile
+
"
\"
"
);
QDir
::
setCurrent
(
oldDir
);
...
...
@@ -288,17 +264,22 @@ void CiteDict::generatePage() const
// copy bib files to the latex output dir
QStrList
&
citeDataList
=
Config_getList
(
"CITE_BIB_FILES"
);
QCString
latexOutputDir
=
Config_getString
(
"LATEX_OUTPUT"
)
+
"/"
;
int
i
=
0
;
const
char
*
bibdata
=
citeDataList
.
first
();
while
(
bibdata
)
{
QCString
bibFile
=
bibdata
;
// Note: file can now have multiple dots
if
(
!
bibFile
.
isEmpty
()
&&
bibFile
.
right
(
4
)
!=
".bib"
)
bibFile
+=
".bib"
;
QFileInfo
fi
(
bibFile
);
if
(
fi
.
exists
())
{
if
(
!
bibFile
.
isEmpty
())
{
copyFile
(
bibFile
,
latexOutputDir
+
fi
.
fileName
().
data
());
// bug_700510, multile times the same name were overwriting; creating new names
// also for names with spaces
++
i
;
copyFile
(
bibFile
,
latexOutputDir
+
bibTmpFile
+
QCString
().
setNum
(
i
)
+
".bib"
);
}
}
else
...
...
@@ -313,10 +294,14 @@ void CiteDict::generatePage() const
thisDir
.
remove
(
citeListFile
);
thisDir
.
remove
(
doxygenBstFile
);
thisDir
.
remove
(
bib2xhtmlFile
);
while
(
!
tempFiles
.
isEmpty
())
bibdata
=
citeDataList
.
first
();
// we might try to remove too many files as empty files didn't get a coresponding new file
// but the remove function does not emit an error for it and we don't catch the error return
// so no problem.
for
(
unsigned
int
j
=
1
;
j
<=
citeDataList
.
count
();
j
++
)
{
QCString
*
s
=
tempFiles
.
take
(
0
);
thisDir
.
remove
(
*
s
);
thisDir
.
remove
(
bibOutputDir
+
bibTmpFile
+
QCString
().
setNum
(
j
)
+
".bib"
);
}
thisDir
.
rmdir
(
bibOutputDir
);
}
src/config.xml
View file @
ca80d3cd
...
...
@@ -1145,9 +1145,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
\c bibtex tool to be installed. See also http://en.wikipedia.org/wiki/BibTeX for
more info. For \f$\mbox{\LaTeX}\f$ the style of the bibliography can be controlled
using \ref cfg_latex_bib_style "LATEX_BIB_STYLE".
To use this
feature you need \c bibtex and \c perl available in the search path. Do not use
file names with spaces, \c bibtex cannot handle them.
To use this feature you need \c bibtex and \c perl available in the search path.
See also \ref cmdcite "\\cite" for info how to create references.
]]>
</docs>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment